Archived
1
0
Fork 0

Merge branch 'master' into core-updates

This commit is contained in:
Mark H Weaver 2017-03-19 18:52:01 -04:00
commit f67337e23e
No known key found for this signature in database
GPG key ID: 7CEF29847562C516
80 changed files with 2826 additions and 962 deletions

View file

@ -30,6 +30,7 @@ nodist_noinst_SCRIPTS = \
include gnu/local.mk include gnu/local.mk
MODULES = \ MODULES = \
guix/base16.scm \
guix/base32.scm \ guix/base32.scm \
guix/base64.scm \ guix/base64.scm \
guix/cpio.scm \ guix/cpio.scm \
@ -251,6 +252,7 @@ TEST_EXTENSIONS = .scm .sh
if CAN_RUN_TESTS if CAN_RUN_TESTS
SCM_TESTS = \ SCM_TESTS = \
tests/base16.scm \
tests/base32.scm \ tests/base32.scm \
tests/base64.scm \ tests/base64.scm \
tests/cpio.scm \ tests/cpio.scm \

2
README
View file

@ -20,7 +20,7 @@ Guix is based on the [[http://nixos.org/nix/][Nix]] package manager.
GNU Guix currently depends on the following packages: GNU Guix currently depends on the following packages:
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.7 or later - [[http://gnu.org/software/guile/][GNU Guile 2.2.x or 2.0.x]], version 2.0.9 or later
- [[http://gnupg.org/][GNU libgcrypt]] - [[http://gnupg.org/][GNU libgcrypt]]
- [[http://www.gnu.org/software/make/][GNU Make]] - [[http://www.gnu.org/software/make/][GNU Make]]
- optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command - optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
@ -27,7 +27,7 @@
(web client) (web client)
(rnrs io ports) (rnrs io ports)
(srfi srfi-11) (srfi srfi-11)
(guix utils) (guix base16)
(guix hash)) (guix hash))
(define %url-base (define %url-base
@ -37,11 +37,6 @@
;;"http://www.fdn.fr/~lcourtes/software/guix/packages" ;;"http://www.fdn.fr/~lcourtes/software/guix/packages"
) )
;; XXX: Work around <http://bugs.gnu.org/13095>, present in Guile
;; up to 2.0.7.
(module-define! (resolve-module '(web client))
'shutdown (const #f))
(define (file-name->uri file) (define (file-name->uri file)
"Return the URI for FILE." "Return the URI for FILE."
(match (string-tokenize file (char-set-complement (char-set #\/))) (match (string-tokenize file (char-set-complement (char-set #\/)))

View file

@ -82,7 +82,7 @@ if test "x$GUILD" = "x"; then
fi fi
if test "x$GUILE_EFFECTIVE_VERSION" = "x2.0"; then if test "x$GUILE_EFFECTIVE_VERSION" = "x2.0"; then
PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.7]) PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.9])
fi fi
dnl Installation directory for .scm and .go files. dnl Installation directory for .scm and .go files.

View file

@ -47,7 +47,6 @@ Documentation License''.
@direntry @direntry
* Guix: (guix). Manage installed software and system configuration. * Guix: (guix). Manage installed software and system configuration.
* guix package: (guix)Invoking guix package. Installing, removing, and upgrading packages. * guix package: (guix)Invoking guix package. Installing, removing, and upgrading packages.
* guix build: (guix)Invoking guix build. Building packages.
* guix gc: (guix)Invoking guix gc. Reclaiming unused disk space. * guix gc: (guix)Invoking guix gc. Reclaiming unused disk space.
* guix pull: (guix)Invoking guix pull. Update the list of available packages. * guix pull: (guix)Invoking guix pull. Update the list of available packages.
* guix system: (guix)Invoking guix system. Manage the operating system configuration. * guix system: (guix)Invoking guix system. Manage the operating system configuration.
@ -56,6 +55,8 @@ Documentation License''.
@dircategory Software development @dircategory Software development
@direntry @direntry
* guix environment: (guix)Invoking guix environment. Building development environments with Guix. * guix environment: (guix)Invoking guix environment. Building development environments with Guix.
* guix build: (guix)Invoking guix build. Building packages.
* guix pack: (guix)Invoking guix pack. Creating binary bundles.
@end direntry @end direntry
@titlepage @titlepage
@ -505,11 +506,13 @@ To use substitutes from @code{hydra.gnu.org} or one of its mirrors
@example @example
# guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub # guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub
@end example @end example
@item
Each user may need to perform a few additional steps to make their Guix
environment ready for use, @pxref{Application Setup}.
@end enumerate @end enumerate
This completes root-level install of Guix. Each user will need to Voilà, the installation is complete!
perform additional steps to make their Guix environment ready for use,
@pxref{Application Setup}.
You can confirm that Guix is working by installing a sample package into You can confirm that Guix is working by installing a sample package into
the root profile: the root profile:
@ -551,7 +554,7 @@ in the Guix source tree for additional details.
GNU Guix depends on the following packages: GNU Guix depends on the following packages:
@itemize @itemize
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.7 or @item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.9 or
later, including 2.2.x; later, including 2.2.x;
@item @url{http://gnupg.org/, GNU libgcrypt}; @item @url{http://gnupg.org/, GNU libgcrypt};
@item @item
@ -2405,7 +2408,9 @@ The @command{guix pack} command creates a shrink-wrapped @dfn{pack} or
containing the binaries of the software you're interested in, and all containing the binaries of the software you're interested in, and all
its dependencies. The resulting archive can be used on any machine that its dependencies. The resulting archive can be used on any machine that
does not have Guix, and people can run the exact same binaries as those does not have Guix, and people can run the exact same binaries as those
you have with Guix. you have with Guix. The pack itself is created in a bit-reproducible
fashion, so anyone can verify that it really contains the build results
that you pretend to be shipping.
For example, to create a bundle containing Guile, Emacs, Geiser, and all For example, to create a bundle containing Guile, Emacs, Geiser, and all
their dependencies, you can run: their dependencies, you can run:
@ -2435,14 +2440,50 @@ guix pack -S /opt/gnu/bin=bin guile emacs geiser
@noindent @noindent
That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy. That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy.
Alternatively, you can produce a pack in the Docker image format using
the following command:
@example
guix pack -f docker guile emacs geiser
@end example
@noindent
The result is a tarball that can be passed to the @command{docker load}
command. See the
@uref{https://docs.docker.com/engine/reference/commandline/load/, Docker
documentation} for more information.
Several command-line options allow you to customize your pack: Several command-line options allow you to customize your pack:
@table @code @table @code
@item --format=@var{format}
@itemx -f @var{format}
Produce a pack in the given @var{format}.
The available formats are:
@table @code
@item tarball
This is the default format. It produces a tarball containing all the
specifies binaries and symlinks.
@item docker
This produces a tarball that follows the
@uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md,
Docker Image Specification}.
@end table
@item --system=@var{system} @item --system=@var{system}
@itemx -s @var{system} @itemx -s @var{system}
Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of
the system type of the build host. the system type of the build host.
@item --target=@var{triplet}
@cindex cross-compilation
Cross-build for @var{triplet}, which must be a valid GNU triplet, such
as @code{"mips64el-linux-gnu"} (@pxref{Specifying target triplets, GNU
configuration triplets,, autoconf, Autoconf}).
@item --compression=@var{tool} @item --compression=@var{tool}
@itemx -C @var{tool} @itemx -C @var{tool}
Compress the resulting tarball using @var{tool}---one of @code{gzip}, Compress the resulting tarball using @var{tool}---one of @code{gzip},
@ -2537,7 +2578,7 @@ what you should use in this case (@pxref{Invoking guix copy}).
@cindex nar, archive format @cindex nar, archive format
@cindex normalized archive (nar) @cindex normalized archive (nar)
By default archives are stored in the ``normalized archive'' or ``nar'' format, which is Archives are stored in the ``normalized archive'' or ``nar'' format, which is
comparable in spirit to `tar', but with differences comparable in spirit to `tar', but with differences
that make it more appropriate for our purposes. First, rather than that make it more appropriate for our purposes. First, rather than
recording all Unix metadata for each file, the nar format only mentions recording all Unix metadata for each file, the nar format only mentions
@ -2553,9 +2594,6 @@ verifies the signature and rejects the import in case of an invalid
signature or if the signing key is not authorized. signature or if the signing key is not authorized.
@c FIXME: Add xref to daemon doc about signatures. @c FIXME: Add xref to daemon doc about signatures.
Optionally, archives can be exported as a Docker image in the tar
archive format using @code{--format=docker}.
The main options are: The main options are:
@table @code @table @code
@ -2584,19 +2622,6 @@ Read a list of store file names from the standard input, one per line,
and write on the standard output the subset of these files missing from and write on the standard output the subset of these files missing from
the store. the store.
@item -f
@item --format=@var{FMT}
@cindex docker, export
@cindex export format
Specify the export format. Acceptable arguments are @code{nar} and
@code{docker}. The default is the nar format. When the format is
@code{docker}, recursively export the specified store directory as a
Docker image in tar archive format, as specified in
@uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md,
version 1.2.0 of the Docker Image Specification}. Using
@code{--format=docker} implies @code{--recursive}. The generated
archive can be loaded by Docker using @command{docker load}.
@item --generate-key[=@var{parameters}] @item --generate-key[=@var{parameters}]
@cindex signing, archives @cindex signing, archives
Generate a new key pair for the daemon. This is a prerequisite before Generate a new key pair for the daemon. This is a prerequisite before
@ -4347,8 +4372,22 @@ of the @code{gexp?} type (see below.)
@deffn {Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{} @deffn {Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{}
Mark the gexps defined in @var{body}@dots{} as requiring @var{modules} Mark the gexps defined in @var{body}@dots{} as requiring @var{modules}
in their execution environment. @var{modules} must be a list of Guile in their execution environment.
module names, such as @code{'((guix build utils) (guix build gremlin))}.
Each item in @var{modules} can be the name of a module, such as
@code{(guix build utils)}, or it can be a module name, followed by an
arrow, followed by a file-like object:
@example
`((guix build utils)
(guix gcrypt)
((guix config) => ,(scheme-file "config.scm"
#~(define-module @dots{}))))
@end example
@noindent
In the example above, the first two modules are taken from the search
path, and the last one is created from the given file-like object.
This form has @emph{lexical} scope: it has an effect on the gexps This form has @emph{lexical} scope: it has an effect on the gexps
directly defined in @var{body}@dots{}, but not on those defined, say, in directly defined in @var{body}@dots{}, but not on those defined, say, in
@ -4882,15 +4921,15 @@ or @code{guile@@1.8}.
For instance, the following command builds Guix, but replaces its For instance, the following command builds Guix, but replaces its
dependency on the current stable version of Guile with a dependency on dependency on the current stable version of Guile with a dependency on
the development version of Guile, @code{guile-next}: the legacy version of Guile, @code{guile@@2.0}:
@example @example
guix build --with-input=guile=guile-next guix guix build --with-input=guile=guile@@2.0 guix
@end example @end example
This is a recursive, deep replacement. So in this example, both This is a recursive, deep replacement. So in this example, both
@code{guix} and its dependency @code{guile-json} (which also depends on @code{guix} and its dependency @code{guile-json} (which also depends on
@code{guile}) get rebuilt against @code{guile-next}. @code{guile}) get rebuilt against @code{guile@@2.0}.
This is implemented using the @code{package-input-rewriting} Scheme This is implemented using the @code{package-input-rewriting} Scheme
procedure (@pxref{Defining Packages, @code{package-input-rewriting}}). procedure (@pxref{Defining Packages, @code{package-input-rewriting}}).
@ -5032,8 +5071,8 @@ to build packages in a complete 32-bit environment.
@item --target=@var{triplet} @item --target=@var{triplet}
@cindex cross-compilation @cindex cross-compilation
Cross-build for @var{triplet}, which must be a valid GNU triplet, such Cross-build for @var{triplet}, which must be a valid GNU triplet, such
as @code{"mips64el-linux-gnu"} (@pxref{Configuration Names, GNU as @code{"mips64el-linux-gnu"} (@pxref{Specifying target triplets, GNU
configuration triplets,, configure, GNU Configure and Build System}). configuration triplets,, autoconf, Autoconf}).
@anchor{build-check} @anchor{build-check}
@item --check @item --check
@ -6365,7 +6404,7 @@ home directory is accessible read-only via the @file{/exchange}
directory: directory:
@example @example
guix environment --container --expose=$HOME=/exchange guile -- guile guix environment --container --expose=$HOME=/exchange --ad-hoc guile -- guile
@end example @end example
@item --share=@var{source}[=@var{target}] @item --share=@var{source}[=@var{target}]
@ -6379,13 +6418,15 @@ home directory is accessible for both reading and writing via the
@file{/exchange} directory: @file{/exchange} directory:
@example @example
guix environment --container --share=$HOME=/exchange guile -- guile guix environment --container --share=$HOME=/exchange --ad-hoc guile -- guile
@end example @end example
@end table @end table
It also supports all of the common build options that @command{guix @command{guix environment}
also supports all of the common build options that @command{guix
build} supports (@pxref{Common Build Options}). build} supports (@pxref{Common Build Options}).
@node Invoking guix publish @node Invoking guix publish
@section Invoking @command{guix publish} @section Invoking @command{guix publish}
@ -9254,16 +9295,34 @@ NetworkManager will not modify @code{resolv.conf}.
@end deftp @end deftp
@cindex Connman @cindex Connman
@deffn {Scheme Procedure} connman-service @ @deffn {Scheme Variable} connman-service-type
[#:connman @var{connman}] This is the service type to run @url{https://01.org/connman,Connman},
Return a service that runs @url{https://01.org/connman,Connman}, a network a network connection manager.
connection manager.
This service adds the @var{connman} package to the global profile, providing Its value must be an
several the @command{connmanctl} command to interact with the daemon and @code{connman-configuration} record as in this example:
configure networking."
@example
(service connman-service-type
(connman-configuration
(disable-vpn? #t)))
@end example
See below for details about @code{connman-configuration}.
@end deffn @end deffn
@deftp {Data Type} connman-configuration
Data Type representing the configuration of connman.
@table @asis
@item @code{connman} (default: @var{connman})
The connman package to use.
@item @code{disable-vpn?} (default: @code{#f})
When true, enable connman's vpn plugin.
@end table
@end deftp
@cindex WPA Supplicant @cindex WPA Supplicant
@defvr {Scheme Variable} wpa-supplicant-service-type @defvr {Scheme Variable} wpa-supplicant-service-type
This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA

View file

@ -11,6 +11,7 @@
# Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
# Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com> # Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
# Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> # Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
# Copyright © 2017 Clément Lassieur <clement@lassieur.org>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -680,6 +681,7 @@ dist_patch_DATA = \
%D%/packages/patches/libevent-2.0-CVE-2016-10195.patch \ %D%/packages/patches/libevent-2.0-CVE-2016-10195.patch \
%D%/packages/patches/libevent-2.0-CVE-2016-10196.patch \ %D%/packages/patches/libevent-2.0-CVE-2016-10196.patch \
%D%/packages/patches/libevent-2.0-CVE-2016-10197.patch \ %D%/packages/patches/libevent-2.0-CVE-2016-10197.patch \
%D%/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch \
%D%/packages/patches/libevent-2.1-dns-tests.patch \ %D%/packages/patches/libevent-2.1-dns-tests.patch \
%D%/packages/patches/libevent-2.1-skip-failing-test.patch \ %D%/packages/patches/libevent-2.1-skip-failing-test.patch \
%D%/packages/patches/libextractor-ffmpeg-3.patch \ %D%/packages/patches/libextractor-ffmpeg-3.patch \
@ -714,7 +716,6 @@ dist_patch_DATA = \
%D%/packages/patches/libtool-skip-tests2.patch \ %D%/packages/patches/libtool-skip-tests2.patch \
%D%/packages/patches/libunwind-CVE-2015-3239.patch \ %D%/packages/patches/libunwind-CVE-2015-3239.patch \
%D%/packages/patches/libvpx-CVE-2016-2818.patch \ %D%/packages/patches/libvpx-CVE-2016-2818.patch \
%D%/packages/patches/libwebp-CVE-2016-9085.patch \
%D%/packages/patches/libwmf-CAN-2004-0941.patch \ %D%/packages/patches/libwmf-CAN-2004-0941.patch \
%D%/packages/patches/libwmf-CVE-2006-3376.patch \ %D%/packages/patches/libwmf-CVE-2006-3376.patch \
%D%/packages/patches/libwmf-CVE-2007-0455.patch \ %D%/packages/patches/libwmf-CVE-2007-0455.patch \
@ -779,7 +780,6 @@ dist_patch_DATA = \
%D%/packages/patches/netsurf-longer-test-timeout.patch \ %D%/packages/patches/netsurf-longer-test-timeout.patch \
%D%/packages/patches/ngircd-handle-zombies.patch \ %D%/packages/patches/ngircd-handle-zombies.patch \
%D%/packages/patches/ngircd-no-dns-in-tests.patch \ %D%/packages/patches/ngircd-no-dns-in-tests.patch \
%D%/packages/patches/ninja-tests.patch \
%D%/packages/patches/ninja-zero-mtime.patch \ %D%/packages/patches/ninja-zero-mtime.patch \
%D%/packages/patches/node-9077.patch \ %D%/packages/patches/node-9077.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \
@ -809,6 +809,7 @@ dist_patch_DATA = \
%D%/packages/patches/ots-no-include-missing-file.patch \ %D%/packages/patches/ots-no-include-missing-file.patch \
%D%/packages/patches/p7zip-CVE-2016-9296.patch \ %D%/packages/patches/p7zip-CVE-2016-9296.patch \
%D%/packages/patches/p7zip-remove-unused-code.patch \ %D%/packages/patches/p7zip-remove-unused-code.patch \
%D%/packages/patches/password-store-gnupg-compat.patch \
%D%/packages/patches/patchelf-page-size.patch \ %D%/packages/patches/patchelf-page-size.patch \
%D%/packages/patches/patchelf-rework-for-arm.patch \ %D%/packages/patches/patchelf-rework-for-arm.patch \
%D%/packages/patches/patchutils-xfail-gendiff-tests.patch \ %D%/packages/patches/patchutils-xfail-gendiff-tests.patch \
@ -878,6 +879,8 @@ dist_patch_DATA = \
%D%/packages/patches/python2-subprocess32-disable-input-test.patch \ %D%/packages/patches/python2-subprocess32-disable-input-test.patch \
%D%/packages/patches/qemu-CVE-2016-10155.patch \ %D%/packages/patches/qemu-CVE-2016-10155.patch \
%D%/packages/patches/qemu-CVE-2017-2615.patch \ %D%/packages/patches/qemu-CVE-2017-2615.patch \
%D%/packages/patches/qemu-CVE-2017-2620.patch \
%D%/packages/patches/qemu-CVE-2017-2630.patch \
%D%/packages/patches/qemu-CVE-2017-5525.patch \ %D%/packages/patches/qemu-CVE-2017-5525.patch \
%D%/packages/patches/qemu-CVE-2017-5526.patch \ %D%/packages/patches/qemu-CVE-2017-5526.patch \
%D%/packages/patches/qemu-CVE-2017-5552.patch \ %D%/packages/patches/qemu-CVE-2017-5552.patch \
@ -965,6 +968,7 @@ dist_patch_DATA = \
%D%/packages/patches/upower-builddir.patch \ %D%/packages/patches/upower-builddir.patch \
%D%/packages/patches/valgrind-enable-arm.patch \ %D%/packages/patches/valgrind-enable-arm.patch \
%D%/packages/patches/vim-CVE-2017-5953.patch \ %D%/packages/patches/vim-CVE-2017-5953.patch \
%D%/packages/patches/virglrenderer-CVE-2017-6386.patch \
%D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch \ %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch \
%D%/packages/patches/vorbis-tools-CVE-2014-9640.patch \ %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch \
%D%/packages/patches/vorbis-tools-CVE-2015-6749.patch \ %D%/packages/patches/vorbis-tools-CVE-2015-6749.patch \

View file

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -30,16 +31,16 @@
(define-public apl (define-public apl
(package (package
(name "apl") (name "apl")
(version "1.6") (version "1.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/apl/apl-" version ".tar.gz")) (uri (string-append "mirror://gnu/apl/apl-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"057zwzvvgcrrwsl52a27w86hgy31jqq6avqq629xj7yq90qah3ay")))) "07xq8ddlmz8psvsmwr23gar108ri0lwmw0n6kpxcv8ypas1f5xlg"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "http://www.gnu.org/software/apl/") (home-page "https://www.gnu.org/software/apl/")
(inputs (inputs
`(("gettext" ,gettext-minimal) `(("gettext" ,gettext-minimal)
("lapack" ,lapack) ("lapack" ,lapack)

View file

@ -108,6 +108,9 @@
(base32 (base32
"0959fiiy11rzfzrzaknmgrx64bhszj02l0ycz79k5a6bmpfzanlk")))) "0959fiiy11rzfzrzaknmgrx64bhszj02l0ycz79k5a6bmpfzanlk"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)
("r-nlme" ,r-nlme)))
(home-page "http://ape-package.ird.fr/") (home-page "http://ape-package.ird.fr/")
(synopsis "Analyses of phylogenetics and evolution") (synopsis "Analyses of phylogenetics and evolution")
(description (description
@ -475,7 +478,7 @@ BED, GFF/GTF, VCF.")
(inputs (inputs
`(("bedtools" ,bedtools-2.18) `(("bedtools" ,bedtools-2.18)
("samtools" ,samtools-0.1) ("samtools" ,samtools-0.1)
("r" ,r) ("r-minimal" ,r-minimal)
("r-foreach" ,r-foreach) ("r-foreach" ,r-foreach)
("r-xnomial" ,r-xnomial) ("r-xnomial" ,r-xnomial)
("r-domc" ,r-domc) ("r-domc" ,r-domc)
@ -1725,7 +1728,7 @@ gene predictor designed to work with assembled, aligned RNA-seq transcripts.")
("python2-scipy" ,python2-scipy) ("python2-scipy" ,python2-scipy)
("python2-matplotlib" ,python2-matplotlib))) ("python2-matplotlib" ,python2-matplotlib)))
(propagated-inputs (propagated-inputs
`(("r" ,r) `(("r-minimal" ,r-minimal)
("libsvm" ,libsvm) ("libsvm" ,libsvm)
("randomjungle" ,randomjungle))) ("randomjungle" ,randomjungle)))
(native-inputs (native-inputs
@ -4001,7 +4004,7 @@ partial genes, and identifies translation initiation sites.")
("grep" ,grep) ("grep" ,grep)
("sed" ,sed) ("sed" ,sed)
("gawk" ,gawk) ("gawk" ,gawk)
("r" ,r) ("r-minimal" ,r-minimal)
("r-ggplot2" ,r-ggplot2) ("r-ggplot2" ,r-ggplot2)
("coreutils" ,coreutils))) ("coreutils" ,coreutils)))
(home-page "http://sanger-pathogens.github.io/Roary") (home-page "http://sanger-pathogens.github.io/Roary")
@ -4116,7 +4119,7 @@ phylogenies.")
(inputs (inputs
`(("boost" ,boost) `(("boost" ,boost)
("ncurses" ,ncurses) ("ncurses" ,ncurses)
("r" ,r) ("r-minimal" ,r-minimal)
("perl" ,perl) ("perl" ,perl)
("samtools" ,samtools-0.1) ("samtools" ,samtools-0.1)
("zlib" ,zlib))) ("zlib" ,zlib)))
@ -4383,7 +4386,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
(define-public ngs-sdk (define-public ngs-sdk
(package (package
(name "ngs-sdk") (name "ngs-sdk")
(version "1.2.5") (version "1.3.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -4393,7 +4396,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"04y1fsmdnb5y86m3gg6f5g9wcscr6r25n7m8mdlcxy0i2q6w6cia")))) "1wiyf4c6nm2j87pv015cbi0qny5byf3pbvcw3likifz5dl56ag40"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:parallel-build? #f ; not supported `(#:parallel-build? #f ; not supported
@ -4447,7 +4450,7 @@ simultaneously.")
(define-public ncbi-vdb (define-public ncbi-vdb
(package (package
(name "ncbi-vdb") (name "ncbi-vdb")
(version "2.7.0") (version "2.8.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -4457,67 +4460,77 @@ simultaneously.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0x1cg1x8vy0yjlkp0snc1533zcjhxqzqsaiwqk598n7vvw37n8lf")))) "1acn4bv81mfl137qnbn9995mjjhwd36pm0b7qli1iw5skrxa9j8m"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:parallel-build? #f ; not supported `(#:parallel-build? #f ; not supported
#:tests? #f ; no "check" target #:tests? #f ; no "check" target
#:phases #:phases
(alist-replace (modify-phases %standard-phases
'configure (replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
;; Override include path for libmagic ;; Override include path for libmagic
(substitute* "setup/package.prl" (substitute* "setup/package.prl"
(("name => 'magic', Include => '/usr/include'") (("name => 'magic', Include => '/usr/include'")
(string-append "name=> 'magic', Include => '" (string-append "name=> 'magic', Include => '"
(assoc-ref inputs "libmagic") (assoc-ref inputs "libmagic")
"/include" "'"))) "/include" "'")))
;; Install kdf5 library (needed by sra-tools) ;; Install kdf5 library (needed by sra-tools)
(substitute* "build/Makefile.install" (substitute* "build/Makefile.install"
(("LIBRARIES_TO_INSTALL =") (("LIBRARIES_TO_INSTALL =")
"LIBRARIES_TO_INSTALL = kdf5.$(VERSION_LIBX) kdf5.$(VERSION_SHLX)")) "LIBRARIES_TO_INSTALL = kdf5.$(VERSION_LIBX) kdf5.$(VERSION_SHLX)"))
(substitute* "build/Makefile.env" (substitute* "build/Makefile.env"
(("CFLAGS =" prefix) (("CFLAGS =" prefix)
(string-append prefix "-msse2 "))) (string-append prefix "-msse2 ")))
;; The 'configure' script doesn't recognize things like ;; Override search path for ngs-java
;; '--enable-fast-install'. (substitute* "setup/package.prl"
(zero? (system* (("/usr/local/ngs/ngs-java")
"./configure" (assoc-ref inputs "java-ngs")))
(string-append "--build-prefix=" (getcwd) "/build")
(string-append "--prefix=" (assoc-ref outputs "out")) ;; The 'configure' script doesn't recognize things like
(string-append "--debug") ;; '--enable-fast-install'.
(string-append "--with-xml2-prefix=" (zero? (system*
(assoc-ref inputs "libxml2")) "./configure"
(string-append "--with-ngs-sdk-prefix=" (string-append "--build-prefix=" (getcwd) "/build")
(assoc-ref inputs "ngs-sdk")) (string-append "--prefix=" (assoc-ref outputs "out"))
(string-append "--with-ngs-java-prefix=" (string-append "--debug")
(assoc-ref inputs "java-ngs")) (string-append "--with-xml2-prefix="
(string-append "--with-hdf5-prefix=" (assoc-ref inputs "libxml2"))
(assoc-ref inputs "hdf5")))))) (string-append "--with-ngs-sdk-prefix="
(alist-cons-after (assoc-ref inputs "ngs-sdk"))
'install 'install-interfaces (string-append "--with-hdf5-prefix="
(lambda* (#:key outputs #:allow-other-keys) (assoc-ref inputs "hdf5")))))))
;; Install interface libraries. On i686 the interface libraries (add-after 'install 'install-interfaces
;; are installed to "linux/gcc/i386", so we need to use the Linux (lambda* (#:key outputs #:allow-other-keys)
;; architecture name ("i386") instead of the target system prefix ;; Install interface libraries. On i686 the interface libraries
;; ("i686"). ;; are installed to "linux/gcc/i386", so we need to use the Linux
(mkdir (string-append (assoc-ref outputs "out") "/ilib")) ;; architecture name ("i386") instead of the target system prefix
(copy-recursively (string-append "build/ncbi-vdb/linux/gcc/" ;; ("i686").
,(system->linux-architecture (mkdir (string-append (assoc-ref outputs "out") "/ilib"))
(or (%current-target-system) (copy-recursively (string-append "build/ncbi-vdb/linux/gcc/"
(%current-system))) ,(system->linux-architecture
"/rel/ilib") (or (%current-target-system)
(string-append (assoc-ref outputs "out") (%current-system)))
"/ilib")) "/rel/ilib")
;; Install interface headers (string-append (assoc-ref outputs "out")
(copy-recursively "interfaces" "/ilib"))
(string-append (assoc-ref outputs "out") ;; Install interface headers
"/include"))) (copy-recursively "interfaces"
%standard-phases)))) (string-append (assoc-ref outputs "out")
"/include"))
#t))
;; These files are needed by sra-tools.
(add-after 'install 'install-configuration-files
(lambda* (#:key outputs #:allow-other-keys)
(let ((target (string-append (assoc-ref outputs "out") "/kfg")))
(mkdir target)
(install-file "libs/kfg/default.kfg" target)
(install-file "libs/kfg/certs.kfg" target))
#t)))))
(inputs (inputs
`(("libxml2" ,libxml2) `(("libxml2" ,libxml2)
("ngs-sdk" ,ngs-sdk) ("ngs-sdk" ,ngs-sdk)
@ -4728,7 +4741,7 @@ sequence itself can be retrieved from these databases.")
(define-public sra-tools (define-public sra-tools
(package (package
(name "sra-tools") (name "sra-tools")
(version "2.7.0") (version "2.8.2-1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -4738,13 +4751,19 @@ sequence itself can be retrieved from these databases.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"13paw7bq6y47d2pl0ac5gpgcqp1xsy1g7v1fwysm3hr8lb2dck17")))) "1camsijmvv2s45mb4iyf44ghl4gkd4rl0viphpcgl3ccchy32a0g"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:parallel-build? #f ; not supported `(#:parallel-build? #f ; not supported
#:tests? #f ; no "check" target #:tests? #f ; no "check" target
#:make-flags #:make-flags
(list (string-append "VDB_LIBDIR=" (list (string-append "DEFAULT_CRT="
(assoc-ref %build-inputs "ncbi-vdb")
"/kfg/certs.kfg")
(string-append "DEFAULT_KFG="
(assoc-ref %build-inputs "ncbi-vdb")
"/kfg/default.kfg")
(string-append "VDB_LIBDIR="
(assoc-ref %build-inputs "ncbi-vdb") (assoc-ref %build-inputs "ncbi-vdb")
,(if (string-prefix? "x86_64" ,(if (string-prefix? "x86_64"
(or (%current-target-system) (or (%current-target-system)
@ -5337,6 +5356,7 @@ information as possible.")
(propagated-inputs (propagated-inputs
`(("r-cluster" ,r-cluster) `(("r-cluster" ,r-cluster)
("r-lattice" ,r-lattice) ("r-lattice" ,r-lattice)
("r-mass" ,r-mass)
("r-mgcv" ,r-mgcv) ("r-mgcv" ,r-mgcv)
("r-permute" ,r-permute))) ("r-permute" ,r-permute)))
(home-page "https://cran.r-project.org/web/packages/vegan") (home-page "https://cran.r-project.org/web/packages/vegan")
@ -5418,7 +5438,8 @@ microarrays.")
`(("r-annotate" ,r-annotate) `(("r-annotate" ,r-annotate)
("r-annotationdbi" ,r-annotationdbi) ("r-annotationdbi" ,r-annotationdbi)
("r-biobase" ,r-biobase) ("r-biobase" ,r-biobase)
("r-s4vectors" ,r-s4vectors))) ("r-s4vectors" ,r-s4vectors)
("r-survival" ,r-survival)))
(home-page "http://bioconductor.org/packages/genefilter") (home-page "http://bioconductor.org/packages/genefilter")
(synopsis "Filter genes from high-throughput experiments") (synopsis "Filter genes from high-throughput experiments")
(description (description
@ -5716,6 +5737,7 @@ annotation infrastructure.")
("r-genomicalignments" ,r-genomicalignments) ("r-genomicalignments" ,r-genomicalignments)
("r-genomicranges" ,r-genomicranges) ("r-genomicranges" ,r-genomicranges)
("r-iranges" ,r-iranges) ("r-iranges" ,r-iranges)
("r-mass" ,r-mass)
("r-rtracklayer" ,r-rtracklayer) ("r-rtracklayer" ,r-rtracklayer)
("r-s4vectors" ,r-s4vectors))) ("r-s4vectors" ,r-s4vectors)))
(home-page "https://github.com/Kraus-Lab/groHMM") (home-page "https://github.com/Kraus-Lab/groHMM")
@ -6115,7 +6137,8 @@ functionality.")
(native-inputs (native-inputs
`(("which" ,which))) `(("which" ,which)))
(propagated-inputs (propagated-inputs
`(("r-graph" ,r-graph) `(("r-codetools" ,r-codetools)
("r-graph" ,r-graph)
("r-knitr" ,r-knitr) ("r-knitr" ,r-knitr)
("r-httr" ,r-httr) ("r-httr" ,r-httr)
("r-optparse" ,r-optparse) ("r-optparse" ,r-optparse)
@ -6643,6 +6666,7 @@ files.")
("r-genomeinfodb" ,r-genomeinfodb) ("r-genomeinfodb" ,r-genomeinfodb)
("r-genomicranges" ,r-genomicranges) ("r-genomicranges" ,r-genomicranges)
("r-iranges" ,r-iranges) ("r-iranges" ,r-iranges)
("r-matrix" ,r-matrix)
("r-s4vectors" ,r-s4vectors))) ("r-s4vectors" ,r-s4vectors)))
(home-page "http://bioconductor.org/packages/SummarizedExperiment") (home-page "http://bioconductor.org/packages/SummarizedExperiment")
(synopsis "Container for representing genomic ranges by sample") (synopsis "Container for representing genomic ranges by sample")
@ -6834,8 +6858,9 @@ information about the latest version of the Gene Ontologies.")
("r-biobase" ,r-biobase) ("r-biobase" ,r-biobase)
("r-biocgenerics" ,r-biocgenerics) ("r-biocgenerics" ,r-biocgenerics)
("r-go-db" ,r-go-db) ("r-go-db" ,r-go-db)
("r-matrixstats" ,r-matrixstats)
("r-graph" ,r-graph) ("r-graph" ,r-graph)
("r-lattice" ,r-lattice)
("r-matrixstats" ,r-matrixstats)
("r-sparsem" ,r-sparsem))) ("r-sparsem" ,r-sparsem)))
(home-page "http://bioconductor.org/packages/topGO") (home-page "http://bioconductor.org/packages/topGO")
(synopsis "Enrichment analysis for gene ontology") (synopsis "Enrichment analysis for gene ontology")
@ -7611,9 +7636,9 @@ library implementing most of the pipeline's features.")
`("R_LIBS_SITE" ":" = (,(getenv "R_LIBS_SITE"))))) `("R_LIBS_SITE" ":" = (,(getenv "R_LIBS_SITE")))))
#t))))) #t)))))
(inputs (inputs
`(("r" ,r) `(("r-minimal" ,r-minimal)
("r-rcas" ,r-rcas) ("r-rcas" ,r-rcas)
("guile-next" ,guile-next) ("guile-next" ,guile-2.2)
("guile-json" ,guile2.2-json) ("guile-json" ,guile2.2-json)
("guile-redis" ,guile2.2-redis))) ("guile-redis" ,guile2.2-redis)))
(native-inputs (native-inputs
@ -8227,7 +8252,8 @@ number detection tools.")
"1wc1fjm6dzlsqqagm43y57w8jh8nsh0r0m8z1p6ximcb5gxqh7hn")))) "1wc1fjm6dzlsqqagm43y57w8jh8nsh0r0m8z1p6ximcb5gxqh7hn"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-genefilter" ,r-genefilter))) `(("r-genefilter" ,r-genefilter)
("r-mgcv" ,r-mgcv)))
(home-page "http://bioconductor.org/packages/sva") (home-page "http://bioconductor.org/packages/sva")
(synopsis "Surrogate variable analysis") (synopsis "Surrogate variable analysis")
(description (description
@ -8279,6 +8305,7 @@ data (variant call format, e.g. VCF or BCF) or meta-analysis results in R.")
(propagated-inputs (propagated-inputs
`(("r-seqminer" ,r-seqminer) `(("r-seqminer" ,r-seqminer)
("r-mvtnorm" ,r-mvtnorm) ("r-mvtnorm" ,r-mvtnorm)
("r-mass" ,r-mass)
("r-compquadform" ,r-compquadform) ("r-compquadform" ,r-compquadform)
("r-getopt" ,r-getopt))) ("r-getopt" ,r-getopt)))
(home-page "http://genome.sph.umich.edu/wiki/RareMETALS2") (home-page "http://genome.sph.umich.edu/wiki/RareMETALS2")
@ -8437,6 +8464,7 @@ analysis.")
`(("r-affy" ,r-affy) `(("r-affy" ,r-affy)
("r-biobase" ,r-biobase) ("r-biobase" ,r-biobase)
("r-ggplot2" ,r-ggplot2) ("r-ggplot2" ,r-ggplot2)
("r-lattice" ,r-lattice)
("r-limma" ,r-limma))) ("r-limma" ,r-limma)))
(home-page "http://bioconductor.org/packages/release/bioc/html/vsn.html") (home-page "http://bioconductor.org/packages/release/bioc/html/vsn.html")
(synopsis "Variance stabilization and calibration for microarray data") (synopsis "Variance stabilization and calibration for microarray data")
@ -8500,6 +8528,7 @@ specific parser.")
(propagated-inputs (propagated-inputs
`(("r-biobase" ,r-biobase) `(("r-biobase" ,r-biobase)
("r-biocgenerics" ,r-biocgenerics) ("r-biocgenerics" ,r-biocgenerics)
("r-mass" ,r-mass)
("r-rcpp" ,r-rcpp))) ("r-rcpp" ,r-rcpp)))
(home-page "https://github.com/hredestig/pcamethods") (home-page "https://github.com/hredestig/pcamethods")
(synopsis "Collection of PCA methods") (synopsis "Collection of PCA methods")
@ -8593,6 +8622,85 @@ contains a number of utilities to explore the MS/MS results and assess missed
and irregular enzymatic cleavages, mass measurement accuracy, etc.") and irregular enzymatic cleavages, mass measurement accuracy, etc.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public r-seurat
;; Source releases are only made for new x.0 versions. All newer versions
;; are only released as pre-built binaries. At the time of this writing the
;; latest binary release is 1.4.0.12, which is equivalent to this commit.
(let ((commit "fccb77d1452c35ee47e47ebf8e87bddb59f3b08d")
(revision "1"))
(package
(name "r-seurat")
(version (string-append "1.4.0.12-" revision "." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/satijalab/seurat")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"101wq3aqrdmbfi3lqmq4iivk9iwbf10d4z216ss25hf7n9091cyl"))
;; Delete pre-built jar.
(snippet
'(begin (delete-file "inst/java/ModularityOptimizer.jar")
#t))))
(build-system r-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'build-jar
(lambda* (#:key inputs #:allow-other-keys)
(let ((classesdir "tmp-classes"))
(setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
(mkdir classesdir)
(and (zero? (apply system* `("javac" "-d" ,classesdir
,@(find-files "java" "\\.java$"))))
(zero? (system* "jar"
"-cf" "inst/java/ModularityOptimizer.jar"
"-C" classesdir ".")))))))))
(native-inputs
`(("jdk" ,icedtea "jdk")))
(propagated-inputs
`(("r-ape" ,r-ape)
("r-caret" ,r-caret)
("r-cowplot" ,r-cowplot)
("r-dplyr" ,r-dplyr)
("r-fastica" ,r-fastica)
("r-fnn" ,r-fnn)
("r-fpc" ,r-fpc)
("r-gdata" ,r-gdata)
("r-ggplot2" ,r-ggplot2)
("r-gplots" ,r-gplots)
("r-gridextra" ,r-gridextra)
("r-igraph" ,r-igraph)
("r-irlba" ,r-irlba)
("r-lars" ,r-lars)
("r-mixtools" ,r-mixtools)
("r-pbapply" ,r-pbapply)
("r-plyr" ,r-plyr)
("r-ranger" ,r-ranger)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcpp" ,r-rcpp)
("r-rcppeigen" ,r-rcppeigen)
("r-rcppprogress" ,r-rcppprogress)
("r-reshape2" ,r-reshape2)
("r-rocr" ,r-rocr)
("r-rtsne" ,r-rtsne)
("r-stringr" ,r-stringr)
("r-tclust" ,r-tclust)
("r-tsne" ,r-tsne)
("r-vgam" ,r-vgam)))
(home-page "http://www.satijalab.org/seurat")
(synopsis "Seurat is an R toolkit for single cell genomics")
(description
"This package is an R package designed for QC, analysis, and
exploration of single cell RNA-seq data. It easily enables widely-used
analytical techniques, including the identification of highly variable genes,
dimensionality reduction; PCA, ICA, t-SNE, standard unsupervised clustering
algorithms; density clustering, hierarchical clustering, k-means, and the
discovery of differentially expressed genes and markers.")
(license license:gpl3))))
(define htslib-for-sambamba (define htslib-for-sambamba
(let ((commit "2f3c3ea7b301f9b45737a793c0b2dcf0240e5ee5")) (let ((commit "2f3c3ea7b301f9b45737a793c0b2dcf0240e5ee5"))
(package (package

View file

@ -259,7 +259,7 @@ tree binary files. These are board description files used by Linux and BSD.")
(define u-boot (define u-boot
(package (package
(name "u-boot") (name "u-boot")
(version "2017.01") (version "2017.03")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -267,7 +267,7 @@ tree binary files. These are board description files used by Linux and BSD.")
"u-boot-" version ".tar.bz2")) "u-boot-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1wpc51jm3zyibgcr78jng2yksqvrya76bxgsr4pcyjrsz5sm2hkc")))) "0gqihplap05dlpwdb971wsqyv01nz2vabwq5g5649gr5jczsyjzm"))))
(native-inputs (native-inputs
`(("bc" ,bc) `(("bc" ,bc)
("dtc" ,dtc) ("dtc" ,dtc)

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -19,6 +19,7 @@
(define-module (gnu packages datastructures) (define-module (gnu packages datastructures)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages perl)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
@ -92,3 +93,26 @@ hashes (CTPH), also called fuzzy checksums. It can identify similar files
that have sequences of identical bytes in the same order, even though bytes that have sequences of identical bytes in the same order, even though bytes
in between these sequences may be different in both content and length.") in between these sequences may be different in both content and length.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public liburcu
(package
(name "liburcu")
(version "0.9.3")
(source (origin
(method url-fetch)
(uri (string-append "https://www.lttng.org/files/urcu/"
"userspace-rcu-" version ".tar.bz2"))
(sha256
(base32
"01j0xp3f0w147yfyzybkjvb7i67i7prsvnkssgvgwry9lvk35khv"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl))) ; for tests
(home-page "http://liburcu.org/")
(synopsis "User-space RCU data synchronisation library")
(description "liburcu is a user-space @dfn{Read-Copy-Update} (RCU) data
synchronisation library. It provides read-side access that scales linearly
with the number of cores. liburcu-cds provides efficient data structures
based on RCU and lock-free algorithms. These structures include hash tables,
queues, stacks, and doubly-linked lists.")
(license license:lgpl2.1+)))

View file

@ -5,7 +5,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -24,17 +24,25 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages dns) (define-module (gnu packages dns)
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
#:use-module (gnu packages crypto) #:use-module (gnu packages crypto)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages groff) #:use-module (gnu packages groff)
#:use-module (gnu packages groff)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libevent) #:use-module (gnu packages libevent)
#:use-module (gnu packages libidn)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages nettle)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
@ -134,8 +142,8 @@ and BOOTP/TFTP for network booting of diskless machines.")
(lambda _ (lambda _
(zero? (system* "make" "force-test"))))))) (zero? (system* "make" "force-test")))))))
(synopsis "An implementation of the Domain Name System") (synopsis "An implementation of the Domain Name System")
(description "BIND is an implementation of the Domain Name System (DNS) (description "BIND is an implementation of the @dfn{Domain Name System}
protocols for the Internet. It is a reference implementation of those (DNS) protocols for the Internet. It is a reference implementation of those
protocols, but it is also production-grade software, suitable for use in protocols, but it is also production-grade software, suitable for use in
high-volume and high-reliability applications. The name BIND stands for high-volume and high-reliability applications. The name BIND stands for
\"Berkeley Internet Name Domain\", because the software originated in the early \"Berkeley Internet Name Domain\", because the software originated in the early
@ -298,9 +306,80 @@ asynchronous fashion.")
"--disable-nsid"))) "--disable-nsid")))
(home-page "http://www.yadifa.eu/") (home-page "http://www.yadifa.eu/")
(synopsis "Authoritative DNS name server") (synopsis "Authoritative DNS name server")
(description "YADIFA is an authorative name server for the Domain Name (description "YADIFA is an authoritative name server for the @dfn{Domain
System (DNS). It aims for both higher performance and a smaller memory Name System} (DNS). It aims for both higher performance and a smaller memory
footprint than other implementations, while remaining fully RFC-compliant. footprint than other implementations, while remaining fully RFC-compliant.
YADIFA supports dynamic record updates and the Domain Name System Security YADIFA supports dynamic record updates and the @dfn{Domain Name System Security
Extensions (DNSSEC).") Extensions} (DNSSEC).")
(license license:bsd-3))) (license license:bsd-3)))
(define-public knot
(package
(name "knot")
(version "2.4.1")
(source (origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-dns/"
name "-" version ".tar.xz"))
(sha256
(base32
"0k3hkc6vqj8yd479zdn80ki5f0vnjhrm4fka7kfj9z7mkgwxsr60"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove bundled libraries and dependencies on them.
(substitute* "configure"
(("src/contrib/dnstap/Makefile") ""))
(substitute* "src/Makefile.in"
(("contrib/dnstap ") ""))
(with-directory-excursion "src/contrib"
(for-each delete-file-recursively
(list "dnstap" "lmdb")))))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("gnutls" ,gnutls)
("jansson" ,jansson)
("libcap-ng" ,libcap-ng)
("libedit" ,libedit)
("libidn" ,libidn)
("liburcu" ,liburcu)
("lmdb" ,lmdb)
("ncurses" ,ncurses)
("nettle" ,nettle)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'disable-directory-pre-creation
(lambda _
;; Don't install empty directories like /etc outside the store.
(substitute* "src/Makefile.in" (("\\$\\(INSTALL\\) -d") "true"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/knot"))
(etc (string-append doc "/examples/etc")))
(zero?
(system* "make"
(string-append "config_dir=" etc)
"install"))))))
#:configure-flags
(list "--sysconfdir=/etc"
"--localstatedir=/var"
"--enable-rosedb" ; serve static records from a database
(string-append "--with-bash-completions="
(assoc-ref %outputs "out")
"/etc/bash_completion.d"))))
(home-page "https://www.knot-dns.cz/")
(synopsis "Authoritative DNS name server")
(description "Knot DNS is an authorative name server for the @dfn{Domain
Name System} (DNS), designed to meet the needs of root and @dfn{top-level
domain} (TLD) name servers. It is implemented as a threaded daemon and uses a
number of programming techniques to improve speed. For example, the responder
is completely lock-free, resulting in a very high response rate. Other features
include automatic @dfn{DNS Security Extensions} (DNSSEC) signing, dynamic record
synthesis, and on-the-fly re-configuration.")
(license (list license:expat ; src/contrib/{hat-trie,murmurhash3}
license:lgpl2.0+ ; parts of scr/contrib/ucw
license:gpl3+)))) ; everything else

View file

@ -85,8 +85,17 @@ release/xsl/current")
(string-append (assoc-ref inputs "docbook-xsl") (string-append (assoc-ref inputs "docbook-xsl")
"/xml/xsl/docbook-xsl-" "/xml/xsl/docbook-xsl-"
,(package-version docbook-xsl))))) ,(package-version docbook-xsl)))))
#t))
;; Do the same for docbook-xml.
(add-before 'install 'make-local-docbook-xml
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "docbook45.conf"
(("http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd")
(string-append (assoc-ref inputs "docbook-xml")
"/xml/dtd/docbook/docbookx.dtd")))
#t))))) #t)))))
(inputs `(("python" ,python-2) (inputs `(("python" ,python-2)
("docbook-xml" ,docbook-xml)
("docbook-xsl" ,docbook-xsl) ("docbook-xsl" ,docbook-xsl)
("libxml2" ,libxml2) ("libxml2" ,libxml2)
("libxslt" ,libxslt))) ("libxslt" ,libxslt)))

View file

@ -2179,7 +2179,7 @@ in @code{html-mode}.")
(define-public emacs-slime (define-public emacs-slime
(package (package
(name "emacs-slime") (name "emacs-slime")
(version "2.18") (version "2.19")
(source (source
(origin (origin
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
@ -2189,7 +2189,7 @@ in @code{html-mode}.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"146avwbwr6mw0nmgyihx8gkr0mv6al7a73igzxvysj62000cqvlj")))) "1jhaq5cn89k45nzyl0jd12gmjxnh1bq9jlfwrxba342agxsscb0p"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(native-inputs (native-inputs
`(("texinfo" ,texinfo))) `(("texinfo" ,texinfo)))
@ -2924,7 +2924,7 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
(string-append "SHELL = " (which "sh"))))))))) (string-append "SHELL = " (which "sh")))))))))
(inputs (inputs
`(("emacs" ,emacs-minimal) `(("emacs" ,emacs-minimal)
("r" ,r))) ("r-minimal" ,r-minimal)))
(native-inputs (native-inputs
`(("perl" ,perl) `(("perl" ,perl)
("texinfo" ,texinfo) ("texinfo" ,texinfo)

View file

@ -350,7 +350,13 @@ standards.")
(mozilla-patch "icecat-bug-1341137-pt3.patch" "69f3d44bdb48" "1ad7rw6nmg3c49ylqxlqqkb6cm2f0ygfzrigs6b60a2zkjqhbl0h") (mozilla-patch "icecat-bug-1341137-pt3.patch" "69f3d44bdb48" "1ad7rw6nmg3c49ylqxlqqkb6cm2f0ygfzrigs6b60a2zkjqhbl0h")
(mozilla-patch "icecat-bug-1341137-pt4.patch" "22546e2cee64" "0gbwxa3p7qkq53hwnvxcqhx8h34qmnjdxy0h3ajik4mw76vrna9s") (mozilla-patch "icecat-bug-1341137-pt4.patch" "22546e2cee64" "0gbwxa3p7qkq53hwnvxcqhx8h34qmnjdxy0h3ajik4mw76vrna9s")
(mozilla-patch "icecat-bug-1341137-pt5.patch" "e5083d8a855a" "1247vbpqzf007nigbxxqd6nwgr1dxd4p8cd0dr45afqh19vhlapj") (mozilla-patch "icecat-bug-1341137-pt5.patch" "e5083d8a855a" "1247vbpqzf007nigbxxqd6nwgr1dxd4p8cd0dr45afqh19vhlapj")
(mozilla-patch "icecat-bug-1339122.patch" "b0d156c7445e" "026jp5bb565yvhkmmicgygcn1lmak85p0466yl1vnjlx1rc8n724"))) (mozilla-patch "icecat-bug-1339122.patch" "b0d156c7445e" "026jp5bb565yvhkmmicgygcn1lmak85p0466yl1vnjlx1rc8n724")
(mozilla-patch "icecat-bug-1319087.patch" "9cd44507fd65" "0mcfvby53r2150libazgrgaqrdyvl0g6cr1f01dsya3cgmc9mkcn")
(mozilla-patch "icecat-bug-1342661.patch" "d449995ef7d9" "1kz8k2jxvhqpjgrsj7r0kqq79036lrkfnx5pvdnsl59np9128j81")
(mozilla-patch "icecat-bug-1343261.patch" "9b5374019b58" "0v5w50r5ys4jjy1lpks280cq8paw7wdy9mrk7szzq7nlcxz90is7")
(mozilla-patch "icecat-bug-1343552-pt1.patch" "08bc7a3330e4" "1hsvffscqc4zflni866ilylgi3a13wz0n882z85xplbhwhc9lcfj")
(mozilla-patch "icecat-bug-1343552-pt2.patch" "8c61ebe37f1b" "1fjsr6bzfyd1zqzz2pglwh2ckys95h21wy3j4rlwkz66057z53qq")
(mozilla-patch "icecat-bug-1340718.patch" "bfa75fc20c2b" "08gksd06lwbb5ykdrk9gh2cb9bximwxhbxl3rprz64jj2bnmd3dq")))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

View file

@ -217,9 +217,9 @@ without requiring the source code to be rewritten.")
(properties '((hidden? . #t))) ;people should install 'guile-2.0' (properties '((hidden? . #t))) ;people should install 'guile-2.0'
(replacement #f))) (replacement #f)))
(define-public guile-next (define-public guile-2.2
(package (inherit guile-2.0) (package (inherit guile-2.0)
(name "guile-next") (name "guile")
(version "2.2.0") (version "2.2.0")
(replacement #f) (replacement #f)
(source (origin (source (origin
@ -236,12 +236,8 @@ without requiring the source code to be rewritten.")
;; times (almost 3 hours on a 4-core Intel i5). ;; times (almost 3 hours on a 4-core Intel i5).
(snippet '(for-each delete-file (snippet '(for-each delete-file
(find-files "prebuilt" "\\.go$"))))) (find-files "prebuilt" "\\.go$")))))
(synopsis "Snapshot of what will become version 2.2 of GNU Guile")
(properties '((timeout . 72000) ;20 hours (properties '((timeout . 72000) ;20 hours
(max-silent-time . 10800) ;3 hours (needed on ARM) (max-silent-time . 10800))) ;3 hours (needed on ARM)
(upstream-name . "guile")
(ftp-server . "alpha.gnu.org")
(ftp-directory . "/gnu/guile")))
(native-search-paths (native-search-paths
(list (search-path-specification (list (search-path-specification
(variable "GUILE_LOAD_PATH") (variable "GUILE_LOAD_PATH")
@ -251,23 +247,28 @@ without requiring the source code to be rewritten.")
(files '("lib/guile/2.2/site-ccache" (files '("lib/guile/2.2/site-ccache"
"share/guile/site/2.2"))))))) "share/guile/site/2.2")))))))
(define (guile-2.2-package-name name) (define (guile-variant-package-name prefix)
"Return NAME with a \"guile2.2-\" prefix instead of \"guile-\", when (lambda (name)
applicable." "Return NAME with PREFIX instead of \"guile-\", when applicable."
(if (string-prefix? "guile-" name) (if (string-prefix? "guile-" name)
(string-append "guile2.2-" (string-append prefix "-"
(string-drop name (string-drop name
(string-length "guile-"))) (string-length "guile-")))
name)) name)))
(define package-for-guile-2.2 (define package-for-guile-2.2
;; A procedure that rewrites the dependency tree of the given package to use ;; A procedure that rewrites the dependency tree of the given package to use
;; GUILE-NEXT instead of GUILE-2.0. ;; GUILE-2.2 instead of GUILE-2.0.
(package-input-rewriting `((,guile-2.0 . ,guile-next)) (package-input-rewriting `((,guile-2.0 . ,guile-2.2))
guile-2.2-package-name)) (guile-variant-package-name "guile2.2")))
(define package-for-guile-2.0
;; Likewise, but the other way around. :-)
(package-input-rewriting `((,guile-2.2 . ,guile-2.0))
(guile-variant-package-name "guile2.0")))
(define-public guile-for-guile-emacs (define-public guile-for-guile-emacs
(package (inherit guile-next) (package (inherit guile-2.2)
(name "guile-for-guile-emacs") (name "guile-for-guile-emacs")
(version "20150510.d8d9a8d") (version "20150510.d8d9a8d")
(source (origin (source (origin
@ -282,7 +283,7 @@ applicable."
(substitute-keyword-arguments `(;; Tests aren't passing for now. (substitute-keyword-arguments `(;; Tests aren't passing for now.
;; Obviously we should re-enable this! ;; Obviously we should re-enable this!
#:tests? #f #:tests? #f
,@(package-arguments guile-next)) ,@(package-arguments guile-2.2))
((#:phases phases) ((#:phases phases)
`(modify-phases ,phases `(modify-phases ,phases
(add-after 'unpack 'autogen (add-after 'unpack 'autogen
@ -300,7 +301,7 @@ applicable."
("flex" ,flex) ("flex" ,flex)
("texinfo" ,texinfo) ("texinfo" ,texinfo)
("gettext" ,gettext-minimal) ("gettext" ,gettext-minimal)
,@(package-native-inputs guile-next))) ,@(package-native-inputs guile-2.2)))
;; Same as in guile-2.0 ;; Same as in guile-2.0
(native-search-paths (native-search-paths
(list (search-path-specification (list (search-path-specification
@ -441,7 +442,7 @@ more.")
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkgconfig" ,pkg-config) (native-inputs `(("pkgconfig" ,pkg-config)
("gperf" ,gperf))) ("gperf" ,gperf)))
(inputs `(("guile" ,guile-2.0))) (inputs `(("guile" ,guile-2.2)))
(synopsis "Framework for building readers for GNU Guile") (synopsis "Framework for building readers for GNU Guile")
(description (description
"Guile-Reader is a simple framework for building readers for GNU Guile. "Guile-Reader is a simple framework for building readers for GNU Guile.
@ -458,8 +459,10 @@ many readers as needed).")
(home-page "http://www.nongnu.org/guile-reader/") (home-page "http://www.nongnu.org/guile-reader/")
(license license:gpl3+))) (license license:gpl3+)))
(define-public guile2.0-reader
(package-for-guile-2.0 guile-reader))
(define-public guile2.2-reader (define-public guile2.2-reader
(package-for-guile-2.2 guile-reader)) (deprecated-package "guile2.2-reader" guile-reader))
(define-public guile-ncurses (define-public guile-ncurses
(package (package
@ -1042,7 +1045,7 @@ Guile's foreign function interface.")
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(inputs (inputs
`(("guile" ,guile-2.0))) `(("guile" ,guile-2.2)))
(propagated-inputs (propagated-inputs
`(("guile-reader" ,guile-reader) `(("guile-reader" ,guile-reader)
("guile-commonmark" ,guile-commonmark))) ("guile-commonmark" ,guile-commonmark)))
@ -1053,9 +1056,11 @@ interface for reading articles in any format.")
(home-page "http://haunt.dthompson.us") (home-page "http://haunt.dthompson.us")
(license license:gpl3+))) (license license:gpl3+)))
(define-public guile2.0-haunt
(package-for-guile-2.0
(package (inherit haunt) (name "guile2.0-haunt"))))
(define-public guile2.2-haunt (define-public guile2.2-haunt
(package-for-guile-2.2 (deprecated-package "guile2.2-haunt" haunt))
(package (inherit haunt) (name "guile2.2-haunt"))))
(define-public guile-config (define-public guile-config
(package (package
@ -1413,7 +1418,7 @@ you send to a FIFO file.")
"/site/@GUILE_EFFECTIVE_VERSION@")))))) "/site/@GUILE_EFFECTIVE_VERSION@"))))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("guile" ,guile-2.0))) `(("guile" ,guile-2.2)))
(synopsis "CommonMark parser for Guile") (synopsis "CommonMark parser for Guile")
(description (description
"guile-commonmark is a library for parsing CommonMark, a fully specified "guile-commonmark is a library for parsing CommonMark, a fully specified
@ -1424,8 +1429,10 @@ is no support for parsing block and inline level HTML.")
(home-page "https://github.com/OrangeShark/guile-commonmark") (home-page "https://github.com/OrangeShark/guile-commonmark")
(license license:lgpl3+))) (license license:lgpl3+)))
(define-public guile2.0-commonmark
(package-for-guile-2.0 guile-commonmark))
(define-public guile2.2-commonmark (define-public guile2.2-commonmark
(package-for-guile-2.2 guile-commonmark)) (deprecated-package "guile2.2-commonmark" guile-commonmark))
(define-public guile-bytestructures (define-public guile-bytestructures
(package (package
@ -1616,18 +1623,18 @@ and then run @command{scm example.scm}.")
(define-public guile-8sync (define-public guile-8sync
(package (package
(name "guile-8sync") (name "guile-8sync")
(version "0.4.1") (version "0.4.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/8sync/8sync-" version (uri (string-append "mirror://gnu/8sync/8sync-" version
".tar.gz")) ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1fvf8d2s3vvg4nyskbqaiqmlm2x571hv7hizcnmny45zvalydr9h")))) "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("autoconf" ,autoconf) (native-inputs `(("autoconf" ,autoconf)
("automake" ,automake) ("automake" ,automake)
("guile" ,guile-next) ("guile" ,guile-2.2)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(arguments (arguments
@ -1643,7 +1650,7 @@ and then run @command{scm example.scm}.")
"GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
library for GNU Guile based on the actor model. library for GNU Guile based on the actor model.
Note that 8sync is only available for Guile 2.2 (guile-next in Guix).") Note that 8sync is only available for Guile 2.2.")
(license license:lgpl3+))) (license license:lgpl3+)))
(define-public guile-fibers (define-public guile-fibers
@ -1662,7 +1669,7 @@ Note that 8sync is only available for Guile 2.2 (guile-next in Guix).")
`(("texinfo" ,texinfo) `(("texinfo" ,texinfo)
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
(inputs (inputs
`(("guile" ,guile-next))) `(("guile" ,guile-2.2)))
(synopsis "Lightweight concurrency facility for Guile") (synopsis "Lightweight concurrency facility for Guile")
(description (description
"Fibers is a Guile library that implements a a lightweight concurrency "Fibers is a Guile library that implements a a lightweight concurrency

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2014, 2015, 2016, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -210,3 +210,35 @@ Library for GNU/Hurd.")
Hurd-minimal package which are needed for both glibc and GCC.") Hurd-minimal package which are needed for both glibc and GCC.")
(home-page (package-home-page hurd-headers)) (home-page (package-home-page hurd-headers))
(license (package-license hurd-headers)))) (license (package-license hurd-headers))))
(define-public gnumach
(package
(name "gnumach")
(version "1.8")
(source (origin
(method url-fetch)
(uri (gnumach-source-url version))
(sha256
(base32
"02hygsfpd2dljl5lg1vjjg9pizi9jyxd4aiiqzjshz6jax62jm9f"))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-after 'install 'produce-image
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(boot (string-append out "/boot")))
(and (zero? (system* "make" "gnumach.gz"))
(begin
(install-file "gnumach.gz" boot)
#t))))))))
(native-inputs
`(("mig" ,mig)
("perl" ,perl)))
(supported-systems (cons "i686-linux" %hurd-systems))
(home-page
"https://www.gnu.org/software/hurd/microkernel/mach/gnumach.html")
(synopsis "Microkernel of the GNU system")
(description
"GNU Mach is the microkernel upon which a GNU Hurd system is based.")
(license gpl2+)))

View file

@ -3,10 +3,10 @@
;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2014, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2014, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net> ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
;;; Copyright © 2014 John Darrington <jmd@gnu.org> ;;; Copyright © 2014, 2017 John Darrington <jmd@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
@ -14,6 +14,7 @@
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -90,6 +91,52 @@ library. It supports almost all PNG features and is extensible.")
(license license:zlib) (license license:zlib)
(home-page "http://www.libpng.org/pub/png/libpng.html"))) (home-page "http://www.libpng.org/pub/png/libpng.html")))
(define-public libpng-apng
(package
(inherit libpng)
(replacement #f) ;libpng's replacement doesn't apply here
(name "libpng-apng")
(version (package-version libpng))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-apng
(lambda* (#:key inputs #:allow-other-keys)
(define (apply-patch file)
(zero? (system* "patch" "-p1" "--force"
"--input" file)))
(let ((apng.gz (assoc-ref inputs "apng")))
(format #t "Applying APNG patch '~a'...~%"
apng.gz)
(system (string-append "gunzip < " apng.gz " > the-patch"))
(and (apply-patch "the-patch")
(for-each apply-patch
(find-files "\\.patch"))))
#t))
(add-before 'configure 'no-checks
(lambda _
(substitute* "Makefile.in"
(("^scripts/symbols.chk") "")
(("check: scripts/symbols.chk") ""))
#t)))))
(inputs
`(("apng" ,(origin
(method url-fetch)
(uri
(string-append "mirror://sourceforge/libpng-apng/libpng16/"
version "/libpng-" version "-apng.patch.gz"))
(sha256
(base32
"026r0gbkf6d6v54wca02cdxln8sj4m2c1yk62sj2aasv2ki2ffh5"))))))
(native-inputs
`(("libtool" ,libtool)))
(synopsis "APNG patch for libpng")
(description
"APNG (Animated Portable Network Graphics) is an unofficial
extension of the APNG (Portable Network Graphics) format.
APNG patch provides APNG support to libpng.")
(home-page "https://sourceforge.net/projects/libpng-apng/")))
(define-public libpng-1.2 (define-public libpng-1.2
(package (package
(inherit libpng) (inherit libpng)
@ -721,17 +768,16 @@ multi-dimensional image processing.")
(define-public libwebp (define-public libwebp
(package (package
(name "libwebp") (name "libwebp")
(version "0.5.1") (version "0.6.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"http://downloads.webmproject.org/releases/webp/libwebp-" version "http://downloads.webmproject.org/releases/webp/libwebp-" version
".tar.gz")) ".tar.gz"))
(patches (search-patches "libwebp-CVE-2016-9085.patch"))
(sha256 (sha256
(base32 (base32
"1pqki1g8nzi8qgciysypd5r38zccv81np1dn43g27830rmpnrmka")))) "0h1brwkyxc7lb8lc53aacdks5vc1y9hzngqi41gg7y6l56912a69"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("freeglut" ,freeglut) `(("freeglut" ,freeglut)
@ -1081,3 +1127,47 @@ interface. It supports color space extensions that allow it to compress from
and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).") and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).")
(license (list license:bsd-3 ; jsimd*.[ch] and most of simd/ (license (list license:bsd-3 ; jsimd*.[ch] and most of simd/
license:ijg)))) ; the rest license:ijg)))) ; the rest
(define-public niftilib
(package
(name "niftilib")
(version "2.0.0")
(source (origin
(method url-fetch)
(uri (list (string-append "mirror://sourceforge/niftilib/"
"nifticlib/nifticlib_"
(string-join (string-split version #\.) "_")
"/nifticlib-" version ".tar.gz")))
(sha256
(base32 "123z9bwzgin5y8gi5ni8j217k7n683whjsvg0lrpii9flgk8isd3"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; there is no test target
#:parallel-build? #f ; not supported
#:make-flags
(list "SHELL=bash"
(string-append "ZLIB_INC="
(assoc-ref %build-inputs "zlib") "/include")
;; Append "-fPIC" to CFLAGS.
(string-append "CFLAGS="
"-Wall -ansi -pedantic -fPIC"))
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(for-each
(lambda (dir)
(copy-recursively dir (string-append out "/" dir)))
'("bin" "lib" "include")))
#t))
(delete 'configure))))
(inputs
`(("zlib" ,zlib)))
(synopsis "Library for reading and writing files in the nifti-1 format")
(description "Niftilib is a set of i/o libraries for reading and writing
files in the nifti-1 data format - a binary file format for storing
medical image data, e.g. magnetic resonance image (MRI) and functional MRI
(fMRI) brain images.")
(home-page "http://niftilib.sourceforge.net")
(license license:public-domain)))

View file

@ -298,14 +298,14 @@ and extensible with plugins and scripts.")
(define-public limnoria (define-public limnoria
(package (package
(name "limnoria") (name "limnoria")
(version "2016.08.07") (version "2017.01.10")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "limnoria" version)) (uri (pypi-uri "limnoria" version))
(sha256 (sha256
(base32 (base32
"0w1d98hfhn4iqrczam7zahhqsvxa79n3xfcrm4jwkg5lba4f9ccm")))) "0va7iiwkrd5miibpaphfm2jlfsmaazbqb8izkmlnlzkqnskhz1ff"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (inputs
`(("python-pytz" ,python-pytz) `(("python-pytz" ,python-pytz)

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@ -74,18 +74,20 @@ loop.")
(inherit libevent) (inherit libevent)
(version "2.0.22") (version "2.0.22")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://github.com/libevent/libevent/releases/download/release-" "https://github.com/libevent/libevent/releases/download/release-"
version "-stable/libevent-" version "-stable.tar.gz")) version "-stable/libevent-" version "-stable.tar.gz"))
(sha256 (sha256
(base32 (base32
"18qz9qfwrkakmazdlwxvjmw8p76g70n3faikwvdwznns1agw9hki")) "18qz9qfwrkakmazdlwxvjmw8p76g70n3faikwvdwznns1agw9hki"))
(patches (search-patches (patches
"libevent-dns-tests.patch" (search-patches
"libevent-2.0-CVE-2016-10195.patch" "libevent-dns-tests.patch"
"libevent-2.0-CVE-2016-10196.patch" "libevent-2.0-CVE-2016-10195.patch"
"libevent-2.0-CVE-2016-10197.patch")))))) "libevent-2.0-CVE-2016-10196.patch"
"libevent-2.0-CVE-2016-10197.patch"
"libevent-2.0-evbuffer-add-use-last-with-datap.patch"))))))
(define-public libev (define-public libev
(package (package

View file

@ -348,8 +348,8 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux")) (define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
(define %linux-libre-version "4.10.2") (define %linux-libre-version "4.10.4")
(define %linux-libre-hash "01kinnv40lqsk6fyz1k7hkx2diyg4mgp28bwraar5sii1gqmcw7k") (define %linux-libre-hash "0cmz4y8pb3sdag32bsrn7vg1i8v9rymfspg85ipkbamm53c7v54g")
(define-public linux-libre (define-public linux-libre
(make-linux-libre %linux-libre-version (make-linux-libre %linux-libre-version
@ -358,14 +358,14 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config)) #:configuration-file kernel-config))
(define-public linux-libre-4.9 (define-public linux-libre-4.9
(make-linux-libre "4.9.14" (make-linux-libre "4.9.16"
"104715z772if18qi61jbyhvidfh6qnwkiy0m9aa8irxgzs1pk9mn" "0n7y7h7ps4l1pr9d0m75hkw41jnfyw301r343dsaznwc0lpq3ch7"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
(define-public linux-libre-4.4 (define-public linux-libre-4.4
(make-linux-libre "4.4.53" (make-linux-libre "4.4.55"
"07sfg4i506f3hmd9k4iimnq1w3x0980qxnh649d1sldqxbmhdgjs" "1m4h3wi4j573hny1yfi9qwkiicx2bx3gwy52zpr8bhxpyqz0d2dl"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
@ -2764,7 +2764,7 @@ and copy/paste text in the console and in xterm.")
(define-public btrfs-progs (define-public btrfs-progs
(package (package
(name "btrfs-progs") (name "btrfs-progs")
(version "4.10") (version "4.10.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://kernel.org/linux/kernel/" (uri (string-append "mirror://kernel.org/linux/kernel/"
@ -2772,7 +2772,7 @@ and copy/paste text in the console and in xterm.")
"btrfs-progs-v" version ".tar.xz")) "btrfs-progs-v" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1njw2nrm51380d8arvqfmspa3app9353yd7hiddas3gpkaiwrjs4")))) "06hs20jwa15xybbmlalba8wvhv3slq1g0wrqrgyh7ll5y11bc5kc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" (outputs '("out"
"static")) ; static versions of binaries in "out" (~16MiB!) "static")) ; static versions of binaries in "out" (~16MiB!)
@ -2807,9 +2807,9 @@ and copy/paste text in the console and in xterm.")
("which" ,which))) ("which" ,which)))
(home-page "https://btrfs.wiki.kernel.org/") (home-page "https://btrfs.wiki.kernel.org/")
(synopsis "Create and manage btrfs copy-on-write file systems") (synopsis "Create and manage btrfs copy-on-write file systems")
(description "Btrfs is a copy-on-write (CoW) file system for Linux aimed at (description "Btrfs is a @dfn{copy-on-write} (CoW) file system for Linux
implementing advanced features while focusing on fault tolerance, repair and aimed at implementing advanced features while focusing on fault tolerance,
easy administration.") repair and easy administration.")
;; GPL2+: crc32.c, radix-tree.c, raid6.c, rbtree.c. ;; GPL2+: crc32.c, radix-tree.c, raid6.c, rbtree.c.
;; GPL2: Everything else. ;; GPL2: Everything else.
(license (list license:gpl2 license:gpl2+)))) (license (list license:gpl2 license:gpl2+))))

View file

@ -26,6 +26,7 @@
#:use-module (guix svn-download) #:use-module (guix svn-download)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system ocaml)
#:use-module (guix build-system r) #:use-module (guix build-system r)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
@ -35,6 +36,7 @@
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages maths) #:use-module (gnu packages maths)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
@ -239,6 +241,39 @@ networks) based on simulation of (stochastic) flow in graphs.")
;; http://listserver.ebi.ac.uk/pipermail/mcl-users/2016/000376.html ;; http://listserver.ebi.ac.uk/pipermail/mcl-users/2016/000376.html
(license license:gpl3))) (license license:gpl3)))
(define-public ocaml-mcl
(package
(name "ocaml-mcl")
(version "12-068oasis4")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/fhcrc/mcl/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1l5jbhwjpsj38x8b9698hfpkv75h8hn3kj0gihjhn8ym2cwwv110"))))
(build-system ocaml-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'patch-paths
(lambda _
(substitute* "configure"
(("SHELL = /bin/sh") (string-append "SHELL = "(which "sh"))))
(substitute* "setup.ml"
(("LDFLAGS=-fPIC")
(string-append "LDFLAGS=-fPIC\"; \"SHELL=" (which "sh"))))
#t)))))
(home-page "https://github.com/fhcrc/mcl")
(synopsis "OCaml wrappers around MCL")
(description
"This package provides OCaml bindings for the MCL graph clustering
algorithm.")
(license license:gpl3)))
(define-public randomjungle (define-public randomjungle
(package (package
(name "randomjungle") (name "randomjungle")
@ -402,7 +437,7 @@ sample proximities between pairs of cases.")
(inputs (inputs
`(("python" ,python) `(("python" ,python)
("numpy" ,python-numpy) ("numpy" ,python-numpy)
("r" ,r) ("r-minimal" ,r-minimal)
("octave" ,octave) ("octave" ,octave)
("swig" ,swig) ("swig" ,swig)
("hdf5" ,hdf5) ("hdf5" ,hdf5)
@ -460,25 +495,6 @@ adaptive sparsity and the Wong algorithm for adaptively sparse gaussian
geometric models.") geometric models.")
(license license:lgpl3+))) (license license:lgpl3+)))
(define-public r-nnet
(package
(name "r-nnet")
(version "7.3-12")
(source
(origin
(method url-fetch)
(uri (cran-uri "nnet" version))
(sha256
(base32
"17amqnw9dpap2w8ivx53hxha2xrm0drwfnj32li0xk41hlz548r7"))))
(build-system r-build-system)
(home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
(synopsis "Feed-forward neural networks and multinomial log-linear models")
(description
"This package provides functions for feed-forward neural networks with a
single hidden layer, and for multinomial log-linear models.")
(license (list license:gpl2+ license:gpl3+))))
(define-public r-kernlab (define-public r-kernlab
(package (package
(name "r-kernlab") (name "r-kernlab")

View file

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2014, 2016, 2017 John Darrington <jmd@gnu.org>
;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org> ;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
@ -17,6 +17,7 @@
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com> ;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -44,6 +45,7 @@
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system ocaml)
#:use-module (guix build-system r) #:use-module (guix build-system r)
#:use-module (gnu packages algebra) #:use-module (gnu packages algebra)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
@ -77,6 +79,7 @@
#:use-module (gnu packages mpi) #:use-module (gnu packages mpi)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages netpbm) #:use-module (gnu packages netpbm)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
#:use-module (gnu packages popt) #:use-module (gnu packages popt)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
@ -277,6 +280,30 @@ differential equations, linear algebra, Fast Fourier Transforms and random
numbers.") numbers.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public ocaml-gsl
(package
(name "ocaml-gsl")
(version "1.19.3")
(source
(origin
(method url-fetch)
(uri
(string-append
"https://github.com/mmottl/gsl-ocaml/releases/download/v"
version"/gsl-ocaml-" version ".tar.gz"))
(sha256
(base32
"0nzp43hp8pbjqkrxnwp5lgjrabxayf61h18fjaydi0s5faq6f3xh"))))
(build-system ocaml-build-system)
(inputs
`(("gsl" ,gsl)))
(home-page "https://mmottl.github.io/gsl-ocaml")
(synopsis "Bindings to the GNU Scientific Library")
(description
"GSL-OCaml is an interface to the @dfn{GNU scientific library} (GSL) for
the OCaml language.")
(license license:gpl3+)))
(define-public glpk (define-public glpk
(package (package
(name "glpk") (name "glpk")
@ -734,6 +761,34 @@ Swath).")
HDF5 file is encoded according to the HDF File Format Specification.") HDF5 file is encoded according to the HDF File Format Specification.")
(license (license:x11-style "file://COPYING")))) (license (license:x11-style "file://COPYING"))))
(define-public itpp
(package
(name "itpp")
(version "4.3.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/itpp/itpp/"
version "/itpp-"
version ".tar.gz"))
(sha256
(base32
"14ddy2xnb6sgp4hiax9v5sv4pr4l4dd4ps76nfha3nrpr1ikhcqm"))))
(build-system cmake-build-system)
(arguments `(#:tests? #f)) ; Tests require googletest *sources*
(inputs `(("lapack" ,lapack)
("fftw" ,fftw)))
(native-inputs `(("texlive-minimal" ,texlive-minimal)
("doxygen" ,doxygen)))
(home-page "http://itpp.sourceforge.net")
(synopsis "C++ library of maths, signal processing and communication classes")
(description "IT++ is a C++ library of mathematical, signal processing and
communication classes and functions. Its main use is in simulation of
communication systems and for performing research in the area of
communications. The kernel of the library consists of generic vector and
matrix classes, and a set of accompanying routines. Such a kernel makes IT++
similar to MATLAB, GNU Octave or SciPy.")
(license license:gpl3+)))
(define-public netcdf (define-public netcdf
(package (package
(name "netcdf") (name "netcdf")
@ -1083,6 +1138,30 @@ modules is done either interactively using the graphical user interface or in
ASCII text files using Gmsh's own scripting language.") ASCII text files using Gmsh's own scripting language.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public maxflow
(package
(name "maxflow")
(version "3.04")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gerddie/maxflow.git")
(commit "42401fa54823d16b9da47716f04e5d9ef1605875")))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0rll38whw55h0vcjrrwdnh9ascvxby0ph7n1l0d12z17cg215kkb"))))
(build-system cmake-build-system)
(home-page "http://pub.ist.ac.at/~vnk/software.html")
(synopsis "Library implementing Maxflow algorithm")
(description "An implementation of the maxflow algorithm described in
@cite{An Experimental Comparison of Min-Cut/Max-Flow Algorithms for
Energy Minimization in Computer Vision.\n
Yuri Boykov and Vladimir Kolmogorov.\n
In IEEE Transactions on Pattern Analysis and Machine Intelligence,\n
September 2004}")
(license license:gpl3+)))
(define-public petsc (define-public petsc
(package (package
(name "petsc") (name "petsc")

View file

@ -29,7 +29,7 @@
(define-public ninja (define-public ninja
(package (package
(name "ninja") (name "ninja")
(version "1.7.1") (version "1.7.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/martine/ninja/" (uri (string-append "https://github.com/martine/ninja/"
@ -37,9 +37,8 @@
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"06dy2dc1aafm61ynw9gzig88la3km9dsh53bxf4mnw7l7kjisn2i")) "1n8n3g26ppwh7zwrc37n3alkbpbj0wki34ih53s3rkhs8ajs1p9f"))
(patches (search-patches "ninja-zero-mtime.patch" (patches (search-patches "ninja-zero-mtime.patch"))))
"ninja-tests.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("python" ,python-2))) (native-inputs `(("python" ,python-2)))
(arguments (arguments

View file

@ -29,6 +29,7 @@
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages emacs) #:use-module (gnu packages emacs)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages ghostscript) #:use-module (gnu packages ghostscript)
@ -971,14 +972,14 @@ GNU CC attributes. It provides also a C pretty printer as an example of use.")
(define-public ocaml-qtest (define-public ocaml-qtest
(package (package
(name "ocaml-qtest") (name "ocaml-qtest")
(version "2.3") (version "2.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/vincent-hugot/iTeML/" (uri (string-append "https://github.com/vincent-hugot/iTeML/"
"archive/v" version ".tar.gz")) "archive/v" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1n7x5l6h4j44f75wzgzjsjkq349i4gj707w1hr7fx84igxxfr6vl")))) "1hw3jqir7w79payy4knc38fa3nxcvl7ap6y6hnqavrhpi8zqb59j"))))
(build-system ocaml-build-system) (build-system ocaml-build-system)
(native-inputs (native-inputs
`(("findlib" ,ocaml-findlib))) `(("findlib" ,ocaml-findlib)))
@ -1213,6 +1214,59 @@ to operate on the result type available from OCaml 4.03 in the standard
library.") library.")
(license license:isc))) (license license:isc)))
(define-public ocaml-sqlite3
(package
(name "ocaml-sqlite3")
(version "4.1.2")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/mmottl/sqlite3-ocaml/releases/download/v"
version "/sqlite3-ocaml-" version ".tar.gz"))
(sha256
(base32
"14c1nir7c6bivajg0vyx853y7la7r5d25g1v5hjb2wfi73r15p1m"))))
(build-system ocaml-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("sqlite" ,sqlite)))
(home-page "https://mmottl.github.io/sqlite3-ocaml")
(synopsis "SQLite3 Bindings for OCaml")
(description
"SQLite3-OCaml is an OCaml library with bindings to the SQLite3 client
API. Sqlite3 is a self-contained, serverless, zero-configuration,
transactional SQL database engine with outstanding performance for many use
cases. These bindings are written in a way that enables a friendly
coexistence with the old (version 2) SQLite and its OCaml wrapper
@code{ocaml-sqlite}.")
(license license:expat)))
(define-public ocaml-csv
(package
(name "ocaml-csv")
(version "1.6")
(source
(origin
(method url-fetch)
(uri
(string-append
"http://github.com/Chris00/ocaml-csv/releases/download/"
version "/csv-" version ".tar.gz"))
(sha256
(base32
"0rv7x843vn6scxj87hzl01yqrl26rc27lr8s7z6rp9vs745g05zj"))))
(build-system ocaml-build-system)
(home-page "https://github.com/Chris00/ocaml-csv")
(synopsis "Pure OCaml functions to read and write CSV")
(description
"@dfn{Comma separated values} (CSV) is a simple tabular format supported
by all major spreadsheets. This library implements pure OCaml functions to
read and write files in this format as well as some convenience functions to
manipulate such data.")
(license (package-license camlp4))))
(define-public ocaml-mtime (define-public ocaml-mtime
(package (package
(name "ocaml-mtime") (name "ocaml-mtime")

View file

@ -147,14 +147,9 @@
ssh "/share/guile/site/2.0:" ssh "/share/guile/site/2.0:"
gnutls "/share/guile/site/2.0"))) gnutls "/share/guile/site/2.0")))
;; Ignore user settings so that a bogus
;; GUILE_LOAD_COMPILED_PATH does not prevent use of
;; 'guix', notably when it contains entries pointing to
;; incompatible .go files as reported at
;; <https://lists.gnu.org/archive/html/guix-devel/2016-03/msg01261.html>.
(wrap-program (string-append out "/bin/guix") (wrap-program (string-append out "/bin/guix")
`("GUILE_LOAD_PATH" ":" prefix (,path)) `("GUILE_LOAD_PATH" ":" prefix (,path))
`("GUILE_LOAD_COMPILED_PATH" ":" = (,path))) `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,path)))
#t)))))) #t))))))
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)

View file

@ -8,6 +8,7 @@
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -291,7 +292,8 @@ any X11 window.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"002mw7j0m33bw483rllzhcf41wp3ixka8yma6kqrfaj57jyw66hn")))) "002mw7j0m33bw483rllzhcf41wp3ixka8yma6kqrfaj57jyw66hn"))
(patches (search-patches "password-store-gnupg-compat.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases '(#:phases

View file

@ -0,0 +1,38 @@
From a8769ef12d7e223e33fc47bed03fba2bfa2f3536 Mon Sep 17 00:00:00 2001
From: Marcus Sundberg <marcus@marcussundberg.com>
Date: Sat, 26 Mar 2016 20:11:43 +0100
Subject: [PATCH] evbuffer_add: Use last_with_datap if set, not last.
evbuffer_add() would always put data in the last chain, even if there
was available space in a previous chain, and in doing so it also
failed to update last_with_datap, causing subsequent calls to other
functions that do look at last_with_datap to add data in the middle
of the evbuffer instead of at the end.
Fixes the evbuffer_add() part of issue #335, and the evbuffer/add2 and
evbuffer/add3 tests, and also prevents wasting space available in the
chain pointed to by last_with_datap.
---
buffer.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/buffer.c b/buffer.c
index 7cca0e8a..f378b731 100644
--- a/buffer.c
+++ b/buffer.c
@@ -1732,7 +1732,11 @@ evbuffer_add(struct evbuffer *buf, const void *data_in, size_t datlen)
goto done;
}
- chain = buf->last;
+ if (*buf->last_with_datap == NULL) {
+ chain = buf->last;
+ } else {
+ chain = *buf->last_with_datap;
+ }
/* If there are no chains allocated for this buffer, allocate one
* big enough to hold all the data. */
--
2.12.0

View file

@ -1,144 +0,0 @@
Fix CVE-2016-9085 (several integer overflows):
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9085
http://seclists.org/oss-sec/2016/q4/253
Patch copied from upstream source repository:
https://chromium.googlesource.com/webm/libwebp/+/e2affacc35f1df6cc3b1a9fa0ceff5ce2d0cce83
From e2affacc35f1df6cc3b1a9fa0ceff5ce2d0cce83 Mon Sep 17 00:00:00 2001
From: Pascal Massimino <pascal.massimino@gmail.com>
Date: Mon, 10 Oct 2016 11:48:39 +0200
Subject: [PATCH] fix potential overflow when width * height * 4 >= (1<<32)
Mostly: avoid doing calculation like: ptr + j * stride
when stride is 'int'. Rather use size_t, or pointer increments (ptr += stride)
when possible.
BUG=webp:314
Change-Id: I81c684b515dd1ec4f601f32d50a6e821c4e46e20
---
examples/gifdec.c | 56 +++++++++++++++++++++++++++++++------------------------
1 file changed, 32 insertions(+), 24 deletions(-)
diff --git a/examples/gifdec.c b/examples/gifdec.c
index 83c3d82..7df176f 100644
--- a/examples/gifdec.c
+++ b/examples/gifdec.c
@@ -20,6 +20,7 @@
#include "webp/encode.h"
#include "webp/mux_types.h"
+#include "webp/format_constants.h"
#define GIF_TRANSPARENT_COLOR 0x00000000
#define GIF_WHITE_COLOR 0xffffffff
@@ -103,12 +104,19 @@ int GIFReadFrame(GifFileType* const gif, int transparent_index,
const GifImageDesc* const image_desc = &gif->Image;
uint32_t* dst = NULL;
uint8_t* tmp = NULL;
- int ok = 0;
- GIFFrameRect rect = {
+ const GIFFrameRect rect = {
image_desc->Left, image_desc->Top, image_desc->Width, image_desc->Height
};
+ const uint64_t memory_needed = 4 * rect.width * (uint64_t)rect.height;
+ int ok = 0;
*gif_rect = rect;
+ if (memory_needed != (size_t)memory_needed ||
+ memory_needed > 4 * MAX_IMAGE_AREA) {
+ fprintf(stderr, "Image is too large (%d x %d).", rect.width, rect.height);
+ return 0;
+ }
+
// Use a view for the sub-picture:
if (!WebPPictureView(picture, rect.x_offset, rect.y_offset,
rect.width, rect.height, &sub_image)) {
@@ -132,15 +140,15 @@ int GIFReadFrame(GifFileType* const gif, int transparent_index,
y += interlace_jumps[pass]) {
if (DGifGetLine(gif, tmp, rect.width) == GIF_ERROR) goto End;
Remap(gif, tmp, rect.width, transparent_index,
- dst + y * sub_image.argb_stride);
+ dst + y * (size_t)sub_image.argb_stride);
}
}
} else { // Non-interlaced image.
int y;
- for (y = 0; y < rect.height; ++y) {
+ uint32_t* ptr = dst;
+ for (y = 0; y < rect.height; ++y, ptr += sub_image.argb_stride) {
if (DGifGetLine(gif, tmp, rect.width) == GIF_ERROR) goto End;
- Remap(gif, tmp, rect.width, transparent_index,
- dst + y * sub_image.argb_stride);
+ Remap(gif, tmp, rect.width, transparent_index, ptr);
}
}
ok = 1;
@@ -216,13 +224,11 @@ int GIFReadMetadata(GifFileType* const gif, GifByteType** const buf,
static void ClearRectangle(WebPPicture* const picture,
int left, int top, int width, int height) {
- int j;
- for (j = top; j < top + height; ++j) {
- uint32_t* const dst = picture->argb + j * picture->argb_stride;
- int i;
- for (i = left; i < left + width; ++i) {
- dst[i] = GIF_TRANSPARENT_COLOR;
- }
+ int i, j;
+ const size_t stride = picture->argb_stride;
+ uint32_t* dst = picture->argb + top * stride + left;
+ for (j = 0; j < height; ++j, dst += stride) {
+ for (i = 0; i < width; ++i) dst[i] = GIF_TRANSPARENT_COLOR;
}
}
@@ -246,29 +252,31 @@ void GIFDisposeFrame(GIFDisposeMethod dispose, const GIFFrameRect* const rect,
if (dispose == GIF_DISPOSE_BACKGROUND) {
GIFClearPic(curr_canvas, rect);
} else if (dispose == GIF_DISPOSE_RESTORE_PREVIOUS) {
- const int src_stride = prev_canvas->argb_stride;
- const uint32_t* const src =
- prev_canvas->argb + rect->x_offset + rect->y_offset * src_stride;
- const int dst_stride = curr_canvas->argb_stride;
- uint32_t* const dst =
- curr_canvas->argb + rect->x_offset + rect->y_offset * dst_stride;
+ const size_t src_stride = prev_canvas->argb_stride;
+ const uint32_t* const src = prev_canvas->argb + rect->x_offset
+ + rect->y_offset * src_stride;
+ const size_t dst_stride = curr_canvas->argb_stride;
+ uint32_t* const dst = curr_canvas->argb + rect->x_offset
+ + rect->y_offset * dst_stride;
assert(prev_canvas != NULL);
- WebPCopyPlane((uint8_t*)src, 4 * src_stride, (uint8_t*)dst, 4 * dst_stride,
+ WebPCopyPlane((uint8_t*)src, (int)(4 * src_stride),
+ (uint8_t*)dst, (int)(4 * dst_stride),
4 * rect->width, rect->height);
}
}
void GIFBlendFrames(const WebPPicture* const src,
const GIFFrameRect* const rect, WebPPicture* const dst) {
- int j;
+ int i, j;
+ const size_t src_stride = src->argb_stride;
+ const size_t dst_stride = dst->argb_stride;
assert(src->width == dst->width && src->height == dst->height);
for (j = rect->y_offset; j < rect->y_offset + rect->height; ++j) {
- int i;
for (i = rect->x_offset; i < rect->x_offset + rect->width; ++i) {
- const uint32_t src_pixel = src->argb[j * src->argb_stride + i];
+ const uint32_t src_pixel = src->argb[j * src_stride + i];
const int src_alpha = src_pixel >> 24;
if (src_alpha != 0) {
- dst->argb[j * dst->argb_stride + i] = src_pixel;
+ dst->argb[j * dst_stride + i] = src_pixel;
}
}
}
--
2.10.1

View file

@ -1,48 +0,0 @@
From 67d6b9262efad99f8aad63ab81efc8e689748766 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <efraim@flashner.co.il>
Date: Sun, 3 Jul 2016 11:55:43 +0300
Subject: [PATCH] patch
---
src/subprocess_test.cc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/subprocess_test.cc b/src/subprocess_test.cc
index ee16190..a537c11 100644
--- a/src/subprocess_test.cc
+++ b/src/subprocess_test.cc
@@ -72,6 +72,7 @@ TEST_F(SubprocessTest, NoSuchCommand) {
#ifndef _WIN32
+#if 0
TEST_F(SubprocessTest, InterruptChild) {
Subprocess* subproc = subprocs_.Add("kill -INT $$");
ASSERT_NE((Subprocess *) 0, subproc);
@@ -82,6 +83,7 @@ TEST_F(SubprocessTest, InterruptChild) {
EXPECT_EQ(ExitInterrupted, subproc->Finish());
}
+#endif
TEST_F(SubprocessTest, InterruptParent) {
Subprocess* subproc = subprocs_.Add("kill -INT $PPID ; sleep 1");
@@ -217,6 +219,7 @@ TEST_F(SubprocessTest, SetWithMulti) {
// OS X's process limit is less than 1025 by default
// (|sysctl kern.maxprocperuid| is 709 on 10.7 and 10.8 and less prior to that).
#if !defined(__APPLE__) && !defined(_WIN32)
+#if 0
TEST_F(SubprocessTest, SetWithLots) {
// Arbitrary big number; needs to be over 1024 to confirm we're no longer
// hostage to pselect.
@@ -245,6 +248,7 @@ TEST_F(SubprocessTest, SetWithLots) {
}
ASSERT_EQ(kNumProcs, subprocs_.finished_.size());
}
+#endif
#endif // !__APPLE__ && !_WIN32
// TODO: this test could work on Windows, just not sure how to simply
--
2.9.0

View file

@ -0,0 +1,53 @@
Copied from upstream mailing list:
https://lists.zx2c4.com/pipermail/password-store/2017-March/002844.html.
The patch actually restores compatibility with GnuPG 2.1.19, the '2.2.19' in
the commit message is a typo.
From 8723d8e8192683891904aff321446b0fac37d1ad Mon Sep 17 00:00:00 2001
From: Andreas Stieger <astieger@suse.com>
Date: Fri, 10 Mar 2017 15:43:26 +0100
Subject: [PATCH] Fix compatibility with GnuPG 2.2.19
GnuPG 2.2.19 added a warning when no command was given.
* src/password-store.sh (reencrypt_path): Add --decrypt to --list-only
* tests/t0300-reencryption.sh (gpg_keys_from_encrypted_file): same
https://bugs.gnupg.org/gnupg/msg9873
http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=810adfd47801fc01e45fb71af9f05c91f7890cdb
https://bugzilla.suse.com/show_bug.cgi?id=1028867
---
src/password-store.sh | 2 +-
tests/t0300-reencryption.sh | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/password-store.sh b/src/password-store.sh
index 1ab6fb5..bad8d4f 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -125,7 +125,7 @@ reencrypt_path() {
done
gpg_keys="$($GPG $PASSWORD_STORE_GPG_OPTS --list-keys --with-colons "${GPG_RECIPIENTS[@]}" | sed -n 's/sub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u)"
fi
- current_keys="$($GPG $PASSWORD_STORE_GPG_OPTS -v --no-secmem-warning --no-permission-warning --list-only --keyid-format long "$passfile" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u)"
+ current_keys="$($GPG $PASSWORD_STORE_GPG_OPTS -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$passfile" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u)"
if [[ $gpg_keys != "$current_keys" ]]; then
echo "$passfile_display: reencrypting to ${gpg_keys//$'\n'/ }"
diff --git a/tests/t0300-reencryption.sh b/tests/t0300-reencryption.sh
index 9d46580..6d5811d 100755
--- a/tests/t0300-reencryption.sh
+++ b/tests/t0300-reencryption.sh
@@ -10,7 +10,7 @@ canonicalize_gpg_keys() {
$GPG --list-keys --with-colons "$@" | sed -n 's/sub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u
}
gpg_keys_from_encrypted_file() {
- $GPG -v --no-secmem-warning --no-permission-warning --list-only --keyid-format long "$1" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u
+ $GPG -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$1" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u
}
gpg_keys_from_group() {
local output="$($GPG --list-config --with-colons | sed -n "s/^cfg:group:$1:\\(.*\\)/\\1/p" | head -n 1)"
--
2.12.0

View file

@ -0,0 +1,134 @@
Fix CVE-2017-2620:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2620
https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg04700.html
Both patches copied from upstream source repository:
Fixes CVE-2017-2620:
http://git.qemu-project.org/?p=qemu.git;a=commit;h=92f2b88cea48c6aeba8de568a45f2ed958f3c298
The CVE-2017-2620 bug-fix depends on this earlier patch:
http://git.qemu-project.org/?p=qemu.git;a=commit;h=913a87885f589d263e682c2eb6637c6e14538061
From 92f2b88cea48c6aeba8de568a45f2ed958f3c298 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Wed, 8 Feb 2017 11:18:36 +0100
Subject: [PATCH] cirrus: add blit_is_unsafe call to cirrus_bitblt_cputovideo
(CVE-2017-2620)
CIRRUS_BLTMODE_MEMSYSSRC blits do NOT check blit destination
and blit width, at all. Oops. Fix it.
Security impact: high.
The missing blit destination check allows to write to host memory.
Basically same as CVE-2014-8106 for the other blit variants.
Cc: qemu-stable@nongnu.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/display/cirrus_vga.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
index 1deb52070a..b9e7cb1df1 100644
--- a/hw/display/cirrus_vga.c
+++ b/hw/display/cirrus_vga.c
@@ -900,6 +900,10 @@ static int cirrus_bitblt_cputovideo(CirrusVGAState * s)
{
int w;
+ if (blit_is_unsafe(s, true)) {
+ return 0;
+ }
+
s->cirrus_blt_mode &= ~CIRRUS_BLTMODE_MEMSYSSRC;
s->cirrus_srcptr = &s->cirrus_bltbuf[0];
s->cirrus_srcptr_end = &s->cirrus_bltbuf[0];
@@ -925,6 +929,10 @@ static int cirrus_bitblt_cputovideo(CirrusVGAState * s)
}
s->cirrus_srccounter = s->cirrus_blt_srcpitch * s->cirrus_blt_height;
}
+
+ /* the blit_is_unsafe call above should catch this */
+ assert(s->cirrus_blt_srcpitch <= CIRRUS_BLTBUFSIZE);
+
s->cirrus_srcptr = s->cirrus_bltbuf;
s->cirrus_srcptr_end = s->cirrus_bltbuf + s->cirrus_blt_srcpitch;
cirrus_update_memory_access(s);
--
2.12.0
From 913a87885f589d263e682c2eb6637c6e14538061 Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 9 Jan 2017 13:35:20 -0700
Subject: [PATCH] display: cirrus: ignore source pitch value as needed in
blit_is_unsafe
Commit 4299b90 added a check which is too broad, given that the source
pitch value is not required to be initialized for solid fill operations.
This patch refines the blit_is_unsafe() check to ignore source pitch in
that case. After applying the above commit as a security patch, we
noticed the SLES 11 SP4 guest gui failed to initialize properly.
Signed-off-by: Bruce Rogers <brogers@suse.com>
Message-id: 20170109203520.5619-1-brogers@suse.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/display/cirrus_vga.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
index bdb092ee9d..379910db2d 100644
--- a/hw/display/cirrus_vga.c
+++ b/hw/display/cirrus_vga.c
@@ -294,7 +294,7 @@ static bool blit_region_is_unsafe(struct CirrusVGAState *s,
return false;
}
-static bool blit_is_unsafe(struct CirrusVGAState *s)
+static bool blit_is_unsafe(struct CirrusVGAState *s, bool dst_only)
{
/* should be the case, see cirrus_bitblt_start */
assert(s->cirrus_blt_width > 0);
@@ -308,6 +308,9 @@ static bool blit_is_unsafe(struct CirrusVGAState *s)
s->cirrus_blt_dstaddr & s->cirrus_addr_mask)) {
return true;
}
+ if (dst_only) {
+ return false;
+ }
if (blit_region_is_unsafe(s, s->cirrus_blt_srcpitch,
s->cirrus_blt_srcaddr & s->cirrus_addr_mask)) {
return true;
@@ -673,7 +676,7 @@ static int cirrus_bitblt_common_patterncopy(CirrusVGAState * s,
dst = s->vga.vram_ptr + (s->cirrus_blt_dstaddr & s->cirrus_addr_mask);
- if (blit_is_unsafe(s))
+ if (blit_is_unsafe(s, false))
return 0;
(*s->cirrus_rop) (s, dst, src,
@@ -691,7 +694,7 @@ static int cirrus_bitblt_solidfill(CirrusVGAState *s, int blt_rop)
{
cirrus_fill_t rop_func;
- if (blit_is_unsafe(s)) {
+ if (blit_is_unsafe(s, true)) {
return 0;
}
rop_func = cirrus_fill[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];
@@ -795,7 +798,7 @@ static int cirrus_do_copy(CirrusVGAState *s, int dst, int src, int w, int h)
static int cirrus_bitblt_videotovideo_copy(CirrusVGAState * s)
{
- if (blit_is_unsafe(s))
+ if (blit_is_unsafe(s, false))
return 0;
return cirrus_do_copy(s, s->cirrus_blt_dstaddr - s->vga.start_addr,
--
2.12.0

View file

@ -0,0 +1,47 @@
Fix CVE-2017-2630:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2630
https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg01246.html
Patch copied from upstream source repository:
http://git.qemu-project.org/?p=qemu.git;a=commit;h=2563c9c6b8670400c48e562034b321a7cf3d9a85
From 2563c9c6b8670400c48e562034b321a7cf3d9a85 Mon Sep 17 00:00:00 2001
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Date: Tue, 7 Mar 2017 09:16:27 -0600
Subject: [PATCH] nbd/client: fix drop_sync [CVE-2017-2630]
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Comparison symbol is misused. It may lead to memory corruption.
Introduced in commit 7d3123e.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20170203154757.36140-6-vsementsov@virtuozzo.com>
[eblake: add CVE details, update conditional]
Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20170307151627.27212-1-eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
nbd/client.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nbd/client.c b/nbd/client.c
index 5c9dee37fa..3dc2564cd0 100644
--- a/nbd/client.c
+++ b/nbd/client.c
@@ -94,7 +94,7 @@ static ssize_t drop_sync(QIOChannel *ioc, size_t size)
char small[1024];
char *buffer;
- buffer = sizeof(small) < size ? small : g_malloc(MIN(65536, size));
+ buffer = sizeof(small) >= size ? small : g_malloc(MIN(65536, size));
while (size > 0) {
ssize_t count = read_sync(ioc, buffer, MIN(65536, size));
--
2.12.0

View file

@ -0,0 +1,54 @@
Fix CVE-2017-6386 (memory leak introduced by fix for CVE-2017-5994).
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5994
Patch copied from upstream source repository:
https://cgit.freedesktop.org/virglrenderer/commit/?id=737c3350850ca4dbc5633b3bdb4118176ce59920
From 737c3350850ca4dbc5633b3bdb4118176ce59920 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Tue, 28 Feb 2017 14:52:09 +1000
Subject: renderer: fix memory leak in vertex elements state create
Reported-by: Li Qiang
Free the vertex array in error path.
This was introduced by this commit:
renderer: fix heap overflow in vertex elements state create.
I rewrote the code to not require the allocation in the first
place if we have an error, seems nicer.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
index 1bca7ad..e5d9f5c 100644
--- a/src/vrend_renderer.c
+++ b/src/vrend_renderer.c
@@ -1648,18 +1648,19 @@ int vrend_create_vertex_elements_state(struct vrend_context *ctx,
unsigned num_elements,
const struct pipe_vertex_element *elements)
{
- struct vrend_vertex_element_array *v = CALLOC_STRUCT(vrend_vertex_element_array);
+ struct vrend_vertex_element_array *v;
const struct util_format_description *desc;
GLenum type;
int i;
uint32_t ret_handle;
- if (!v)
- return ENOMEM;
-
if (num_elements > PIPE_MAX_ATTRIBS)
return EINVAL;
+ v = CALLOC_STRUCT(vrend_vertex_element_array);
+ if (!v)
+ return ENOMEM;
+
v->count = num_elements;
for (i = 0; i < num_elements; i++) {
memcpy(&v->elements[i].base, &elements[i], sizeof(struct pipe_vertex_element));
--
cgit v0.10.2

View file

@ -12,6 +12,7 @@
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -45,6 +46,7 @@
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages game-development) #:use-module (gnu packages game-development)
#:use-module (gnu packages ghostscript) #:use-module (gnu packages ghostscript)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
#:use-module (gnu packages djvu) #:use-module (gnu packages djvu)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
@ -875,3 +877,31 @@ This is much like @command{poster} does for Postscript files, but working with
PDF. Since sometimes @command{poster} does not like your files converted from PDF. Since sometimes @command{poster} does not like your files converted from
PDF. Indeed @command{pdfposter} was inspired by @command{poster}.") PDF. Indeed @command{pdfposter} was inspired by @command{poster}.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public pdfgrep
(package
(name "pdfgrep")
(version "2.0.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://pdfgrep.org/download/"
name "-" version ".tar.gz"))
(sha256
(base32
"07llkrkcfjwd3ybai9ad10ybhr0biffcplmy7lw4fb87nd2dfw03"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("libgcrypt" ,libgcrypt)
("pcre" ,pcre)
("poppler" ,poppler)))
(home-page "https://pdfgrep.org")
(synopsis "Command-line utility to search text in PDF files")
(description
"Pdfgrep searches in pdf files for strings matching a regular expression.
Support some GNU grep options as file name output, page number output,
optional case insensitivity, count occurrences, color highlights and search in
multiple files.")
(license license:gpl2+)))

View file

@ -4075,7 +4075,8 @@ operators such as union, intersection, and difference.")
`(("readline" ,readline) `(("readline" ,readline)
("icu4c" ,icu4c) ("icu4c" ,icu4c)
("pcre" ,pcre) ("pcre" ,pcre)
("r" ,r))) ("r-minimal" ,r-minimal)
("r-survival" ,r-survival)))
(native-inputs (native-inputs
`(("zlib" ,zlib))) `(("zlib" ,zlib)))
(home-page "http://rpy.sourceforge.net/") (home-page "http://rpy.sourceforge.net/")
@ -5860,13 +5861,13 @@ of the structure, dynamics, and functions of complex networks.")
(define-public snakemake (define-public snakemake
(package (package
(name "snakemake") (name "snakemake")
(version "3.9.0") (version "3.11.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "snakemake" version)) (uri (pypi-uri "snakemake" version))
(sha256 (sha256
(base32 "1d48ql0010v9ls6mac7fz6j391gm4h74a64hqgw89s0vfqgdyzdl")))) (base32 "0qcp7y9csvanyzh08jppryhd5di8r1z7p0d4wkfg5591pj3bb8zp"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; TODO: Package missing test dependencies. ;; TODO: Package missing test dependencies.

View file

@ -79,6 +79,8 @@
"0qjy3rcrn89n42y5iz60kgr0rrl29hpnj8mq2yvbc1wrcizmvzfs")) "0qjy3rcrn89n42y5iz60kgr0rrl29hpnj8mq2yvbc1wrcizmvzfs"))
(patches (search-patches "qemu-CVE-2016-10155.patch" (patches (search-patches "qemu-CVE-2016-10155.patch"
"qemu-CVE-2017-2615.patch" "qemu-CVE-2017-2615.patch"
"qemu-CVE-2017-2620.patch"
"qemu-CVE-2017-2630.patch"
"qemu-CVE-2017-5525.patch" "qemu-CVE-2017-5525.patch"
"qemu-CVE-2017-5526.patch" "qemu-CVE-2017-5526.patch"
"qemu-CVE-2017-5552.patch" "qemu-CVE-2017-5552.patch"

View file

@ -44,7 +44,7 @@
#:use-module (srfi srfi-26)) #:use-module (srfi srfi-26))
;; Should be one less than the current released version. ;; Should be one less than the current released version.
(define %rust-bootstrap-binaries-version "1.13.0") (define %rust-bootstrap-binaries-version "1.14.0")
(define %rust-bootstrap-binaries (define %rust-bootstrap-binaries
(origin (origin
@ -55,7 +55,7 @@
"-i686-unknown-linux-gnu.tar.gz")) "-i686-unknown-linux-gnu.tar.gz"))
(sha256 (sha256
(base32 (base32
"0fcl7xgm2m21sjv1f27i3v692aa91lk8r867hl8d6l377w8k95r3")))) "0h384prpabcl08mxs1bilyb0dbk0knpdylcnz4b84ij4idr7ap4d"))))
(define (increment-rust-version rust-version major patch) (define (increment-rust-version rust-version major patch)
(match (string-split rust-version #\.) (match (string-split rust-version #\.)
@ -205,7 +205,7 @@ rustc-bootstrap and cargo-bootstrap packages.")
"rustc-" version "-src.tar.gz")) "rustc-" version "-src.tar.gz"))
(sha256 (sha256
(base32 (base32
"0srvmhhdbbcl21nzg9m9zni7k10h88lsy8k1ljz03g8mx79fv467")))) "0wvn8m1nfg664b95qrdpfh72q1a6ir09rqkrnlzbkay2r7xf8mgn"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("cmake" ,cmake) `(("cmake" ,cmake)
@ -234,10 +234,13 @@ rustc-bootstrap and cargo-bootstrap packages.")
(lambda _ (lambda _
(setenv "SHELL" (which "sh")) (setenv "SHELL" (which "sh"))
(setenv "CONFIG_SHELL" (which "sh")))) (setenv "CONFIG_SHELL" (which "sh"))))
(add-after 'unpack 'patch-lockfile-test (add-after 'unpack 'patch-tests
(lambda _ (lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/tools/tidy/src/main.rs" (substitute* "src/tools/tidy/src/main.rs"
(("^.*cargo.*::check.*$") "")))) (("^.*cargo.*::check.*$") ""))
(substitute* "src/libstd/process.rs"
(("\"/bin/sh\"") (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\"")))
#t))
(replace 'configure (replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
@ -260,7 +263,7 @@ rustc-bootstrap and cargo-bootstrap packages.")
"--release-channel=stable" "--release-channel=stable"
"--enable-rpath" "--enable-rpath"
"--enable-local-rust" "--enable-local-rust"
;;"--enable-rustbuild" "--disable-rustbuild" ; use Makefiles
"--disable-manage-submodules"))) "--disable-manage-submodules")))
;; Rust uses a custom configure script (no autoconf). ;; Rust uses a custom configure script (no autoconf).
(zero? (apply system* "./configure" flags))))) (zero? (apply system* "./configure" flags)))))
@ -288,15 +291,12 @@ safety and thread safety guarantees.")
(version (cargo-version (rustc-version %rust-bootstrap-binaries-version))) (version (cargo-version (rustc-version %rust-bootstrap-binaries-version)))
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; Use a cargo tarball with vendored dependencies and a cargo (uri (string-append "https://github.com/rust-lang/cargo/archive/"
;; config file. version ".tar.gz"))
(uri (string-append
"https://github.com/dvc94ch/cargo"
"/archive/" version "-cargo-vendor.tar.gz"))
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0hpix5hwz10pm1wh65gimhsy9nxjvy7yikgbpw8afwglqr3bl856")))) "194i06y9nql0p93gahh0vm4qwv6c1kpd9rprpf22w5gav9lpcyjz"))))
(build-system cargo-build-system) (build-system cargo-build-system)
(propagated-inputs (propagated-inputs
`(("cmake" ,cmake) `(("cmake" ,cmake)
@ -308,6 +308,483 @@ safety and thread safety guarantees.")
("openssl" ,openssl) ("openssl" ,openssl)
("python-2" ,python-2) ("python-2" ,python-2)
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-inputs
`(("rust-openssl"
,(origin
(method url-fetch)
(uri (crate-uri "openssl" "0.9.1"))
(sha256
(base32
"1m2mhiar87qnw4gxci286q9g85ljafbc41salbj2hmcgh8aagchy"))))
("rust-strsim"
,(origin
(method url-fetch)
(uri (crate-uri "strsim" "0.5.1"))
(sha256
(base32
"0bj4fsm1l2yqbfpspyvjf9m3m50pskapcddzm0ji9c74jbgnkh2h"))))
("rust-libc"
,(origin
(method url-fetch)
(uri (crate-uri "libc" "0.2.18"))
(sha256
(base32
"0w5cghr0wx3hi2sclk8r9iyzlbxsakil87ada40q2ykyhky24655"))))
("rust-bitflags"
,(origin
(method url-fetch)
(uri (crate-uri "bitflags" "0.7.0"))
(sha256
(base32
"0v8hh6wdkpk9my8z8442g4hqrqf05h0qj53dsay6mv18lqvqklda"))))
("rust-unicode-normalization"
,(origin
(method url-fetch)
(uri (crate-uri "unicode-normalization" "0.1.2"))
(sha256
(base32
"0whi4xxqcjfsz6ywyrfd5lhgk1a44c86qwgvfqcmzidshcpklr16"))))
("rust-rand"
,(origin
(method url-fetch)
(uri (crate-uri "rand" "0.3.14"))
(sha256
(base32
"1984zvj8572ig28fz6idc4r96fx39h4lzmr07yf7kb7gdn6di497"))))
("rust-gcc"
,(origin
(method url-fetch)
(uri (crate-uri "gcc" "0.3.39"))
(sha256
(base32
"1q0idjvmhp6shkb9hqabh51rgfr8dqpi1xfmyzq7q8vgzybll7kp"))))
("rust-tempdir"
,(origin
(method url-fetch)
(uri (crate-uri "tempdir" "0.3.5"))
(sha256
(base32
"1mij45kgzflkja0h8q9avrik76h5a0b60m9hfd6k9yqxbiplm5w7"))))
("rust-memchr"
,(origin
(method url-fetch)
(uri (crate-uri "memchr" "0.1.11"))
(sha256
(base32
"084d85hjfa3xf5kwdms2mhbkh78m1gl2254cp5swcxj3a7xjkdnq"))))
("rust-rustc-serialize"
,(origin
(method url-fetch)
(uri (crate-uri "rustc-serialize" "0.3.21"))
(sha256
(base32
"064qmyr2508qf78dwcpiv25rfjp9h9vd0wrj4mmwgppjg4fgrydz"))))
("rust-cmake"
,(origin
(method url-fetch)
(uri (crate-uri "cmake" "0.1.19"))
(sha256
(base32
"0am8c8ns1h6b1a5x9z2r1m3rszvya5nccl2pzszzjv5aiiaydgcf"))))
("rust-matches"
,(origin
(method url-fetch)
(uri (crate-uri "matches" "0.1.4"))
(sha256
(base32
"1c8190j84hbicy8jwscw5icfam12j6lcxi02lvmadq9260p65mzg"))))
("rust-winapi"
,(origin
(method url-fetch)
(uri (crate-uri "winapi" "0.2.8"))
(sha256
(base32
"0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"))))
("rust-pkg-config"
,(origin
(method url-fetch)
(uri (crate-uri "pkg-config" "0.3.8"))
(sha256
(base32
"1ypj4nj2z9z27qg06v3g40jyhw685i3l2wi098d21bvyri781vlc"))))
("rust-libssh2-sys"
,(origin
(method url-fetch)
(uri (crate-uri "libssh2-sys" "0.2.4"))
(sha256
(base32
"1pmmh0hcx14856wg9bp740yf618qfl2765vhf67sfs5lmf39227d"))))
("rust-libz-sys"
,(origin
(method url-fetch)
(uri (crate-uri "libz-sys" "1.0.10"))
(sha256
(base32
"1rl85x045sk5d345hgcahx99plpbdg2a3bx5vjfxig30qah74p4h"))))
("rust-curl-sys"
,(origin
(method url-fetch)
(uri (crate-uri "curl-sys" "0.3.6"))
(sha256
(base32
"0fi8kjz3f8m8vfazycs3ddm0h6j3x78hw78gwbvybx71129192i1"))))
("rust-openssl-sys"
,(origin
(method url-fetch)
(uri (crate-uri "openssl-sys" "0.9.1"))
(sha256
(base32
"1sdhgalfm2zdqf144xhdnxdha7ifjgsfbmlrqbx0j9f3mh4gpscm"))))
("rust-fs2"
,(origin
(method url-fetch)
(uri (crate-uri "fs2" "0.3.0"))
(sha256
(base32
"0lg57mgcm1r0m8jm4nqpcrl6lmxg8lj854k2h0r7qp46pphh2034"))))
("rust-log"
,(origin
(method url-fetch)
(uri (crate-uri "log" "0.3.6"))
(sha256
(base32
"0m40hgs3cg57dd5kk1mabfk6gk8z6l1cihar8akx4kmzz1xlk0xb"))))
("rust-filetime"
,(origin
(method url-fetch)
(uri (crate-uri "filetime" "0.1.10"))
(sha256
(base32
"08p9scgv30i1141cnp5xi4pqlnkfci455nrpca55df1r867anqsk"))))
("rust-tar"
,(origin
(method url-fetch)
(uri (crate-uri "tar" "0.4.9"))
(sha256
(base32
"1vi3nl8s3jjf5l20ni47gmh1p4bdjfh7q50fbg7izzqrf7i4i40c"))))
("rust-glob"
,(origin
(method url-fetch)
(uri (crate-uri "glob" "0.2.11"))
(sha256
(base32
"1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"))))
("rust-cfg-if"
,(origin
(method url-fetch)
(uri (crate-uri "cfg-if" "0.1.0"))
(sha256
(base32
"137qikjcal4h75frzcn6mknygqk8vy5bva7w851aydb5gc6pc7ny"))))
("rust-winapi-build"
,(origin
(method url-fetch)
(uri (crate-uri "winapi-build" "0.1.1"))
(sha256
(base32
"1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"))))
("rust-advapi32-sys"
,(origin
(method url-fetch)
(uri (crate-uri "advapi32-sys" "0.2.0"))
(sha256
(base32
"16largvlrd1800vvdchml0ngnszjlnpqm01rcz5hm7di1h48hrg0"))))
("rust-gdi32-sys"
,(origin
(method url-fetch)
(uri (crate-uri "gdi32-sys" "0.2.0"))
(sha256
(base32
"0605d4ngjsspghwjv4jicajich1gnl0aik9f880ajjzjixd524h9"))))
("rust-ws2_32-sys"
,(origin
(method url-fetch)
(uri (crate-uri "ws2_32-sys" "0.2.1"))
(sha256
(base32
"0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"))))
("rust-user32-sys"
,(origin
(method url-fetch)
(uri (crate-uri "user32-sys" "0.2.0"))
(sha256
(base32
"0ivxc7hmsxax9crdhxdd1nqwik4s9lhb2x59lc8b88bv20fp3x2f"))))
("rust-unicode-bidi"
,(origin
(method url-fetch)
(uri (crate-uri "unicode-bidi" "0.2.3"))
(sha256
(base32
"0gqbyf6slkgzr14nf6v8dw8a19l5snh6bpms8bpfvzpxdawwxxy1"))))
("rust-net2"
,(origin
(method url-fetch)
(uri (crate-uri "net2" "0.2.26"))
(sha256
(base32
"1qp3q6xynb481rsp3ig1nmqb6qlxfba3shfrmqij88cppsv9rpsy"))))
("rust-utf8-ranges"
,(origin
(method url-fetch)
(uri (crate-uri "utf8-ranges" "0.1.3"))
(sha256
(base32
"03xf604b2v51ag3jgzw92l97xnb10kw9zv948bhc7ja1ik017jm1"))))
("rust-crossbeam"
,(origin
(method url-fetch)
(uri (crate-uri "crossbeam" "0.2.10"))
(sha256
(base32
"15wga0kvk3iqf3l077957j931brf1pl3p74xibd698jccqas4phc"))))
("rust-toml"
,(origin
(method url-fetch)
(uri (crate-uri "toml" "0.2.1"))
(sha256
(base32
"1d1cz43bxrx4fd6j2p6myckf81f72bp47akg36y3flxjkhj60svk"))))
("rust-aho-corasick"
,(origin
(method url-fetch)
(uri (crate-uri "aho-corasick" "0.5.3"))
(sha256
(base32
"0rnvdmlajikq0i4zdy1p3pv699q6apvsxfc7av7byhppllp2r5ya"))))
("rust-psapi-sys"
,(origin
(method url-fetch)
(uri (crate-uri "psapi-sys" "0.1.0"))
(sha256
(base32
"0y14g8qshsfnmb7nk2gs1rpbrs1wrggajmzp4yby4q6k0wd5vkdb"))))
("rust-idna"
,(origin
(method url-fetch)
(uri (crate-uri "idna" "0.1.0"))
(sha256
(base32
"049c2rmlydrrrgrxdaq2v21adx9vkfh6k9x4xj56ckyf01p26lqh"))))
("rust-url"
,(origin
(method url-fetch)
(uri (crate-uri "url" "1.2.3"))
(sha256
(base32
"1myr1i8djbl2bhvvrm6n3h7bj7sl6kh5dmaaz2f7c6x8hyyzgk28"))))
("rust-regex-syntax"
,(origin
(method url-fetch)
(uri (crate-uri "regex-syntax" "0.3.9"))
(sha256
(base32
"0ms9hgdhhsxw9w920i7gipydvagf100bb56jbs192rz86ln01v7r"))))
("rust-kernel32-sys"
,(origin
(method url-fetch)
(uri (crate-uri "kernel32-sys" "0.2.2"))
(sha256
(base32
"1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"))))
("rust-term"
,(origin
(method url-fetch)
(uri (crate-uri "term" "0.4.4"))
(sha256
(base32
"0jpr7jb1xidadh0arklwr99r8w1k1dfc4an3ginpsq5nnfigivrx"))))
("rust-thread-id"
,(origin
(method url-fetch)
(uri (crate-uri "thread-id" "2.0.0"))
(sha256
(base32
"00zzs2bx1xw8aqm5plqqgr7bc2zz6zkqrdxq8vpiqb8hc2srslx9"))))
("rust-thread_local"
,(origin
(method url-fetch)
(uri (crate-uri "thread_local" "0.2.7"))
(sha256
(base32
"1mgxikqvhpsic6xk7pan95lvgsky1sdxzw2w5m2l35pgrazxnxl5"))))
("rust-miow"
,(origin
(method url-fetch)
(uri (crate-uri "miow" "0.1.3"))
(sha256
(base32
"16jvfjsp6fr4mbd2sw5hcdmi4dsa0m0aa45gjz78mb1h4mwcdgym"))))
("rust-regex"
,(origin
(method url-fetch)
(uri (crate-uri "regex" "0.1.80"))
(sha256
(base32
"0bs036h3vzc6pj5jj4vc909s9rppq7b808ic99qn0y6gm3karm2g"))))
("rust-num_cpus"
,(origin
(method url-fetch)
(uri (crate-uri "num_cpus" "1.1.0"))
(sha256
(base32
"1bfwcn3yhwa31rinjw9yr7b6gvn6c06hnwnjz06pvm938w4fd448"))))
("rust-libgit2-sys"
,(origin
(method url-fetch)
(uri (crate-uri "libgit2-sys" "0.6.5"))
(sha256
(base32
"0yl80n12ih4jh1halpbj3zqlqvw5zxdr6m6xdcvdz67svjy50bjh"))))
("rust-env_logger"
,(origin
(method url-fetch)
(uri (crate-uri "env_logger" "0.3.5"))
(sha256
(base32
"0bvcjgkw4s3k1rd7glpflgc8s9a393zjd6jfdgvs8gjvwj0dgaqm"))))
("rust-openssl-probe"
,(origin
(method url-fetch)
(uri (crate-uri "openssl-probe" "0.1.0"))
(sha256
(base32
"0689h6rhzy6dypqr90lsxnf108nsnh952wsx7ggs70s48b44jvbm"))))
("rust-lazy_static"
,(origin
(method url-fetch)
(uri (crate-uri "lazy_static" "0.2.2"))
(sha256
(base32
"16z1h7w702sxnscak38jykxlhxq0b5ip4mndlb46pkaqwzi0xgka"))))
("rust-semver-parser"
,(origin
(method url-fetch)
(uri (crate-uri "semver-parser" "0.6.1"))
(sha256
(base32
"1s8s7a7yg8xhgci17y0xhyyncg229byivhpr0wbs3ljdlyjl73p8"))))
("rust-semver"
,(origin
(method url-fetch)
(uri (crate-uri "semver" "0.5.1"))
(sha256
(base32
"1xbiv8l72rmngb3lgbmk3vd4lalcbzxcnrn085c2b75irl7gcbxf"))))
("rust-docopt"
,(origin
(method url-fetch)
(uri (crate-uri "docopt" "0.6.86"))
(sha256
(base32
"1nf4f4zf5yk0d0l4kl7hkii4na22fhn0l2hgfb46yzv08l2g6zja"))))
("rust-miniz-sys"
,(origin
(method url-fetch)
(uri (crate-uri "miniz-sys" "0.1.7"))
(sha256
(base32
"0m7dlggsxash0k5jkx576p556g9r8vnhyl9244gjxhq1g8rls7wx"))))
("rust-curl"
,(origin
(method url-fetch)
(uri (crate-uri "curl" "0.4.1"))
(sha256
(base32
"1b0y27b6vpqffgzm2kxc1s2i6bgdzxk3wn65g2asbcdxrvys3mcg"))))
("rust-flate2"
,(origin
(method url-fetch)
(uri (crate-uri "flate2" "0.2.14"))
(sha256
(base32
"1fx3zsls5bb1zfx87s5sxkgk853z4nhjsbvq5s6if13kjlg4isry"))))
("rust-git2"
,(origin
(method url-fetch)
(uri (crate-uri "git2" "0.6.3"))
(sha256
(base32
"06b1bw3pwszs8617xn8js6h0j983qjgfwsychw33lshccj3cld05"))))
("rust-crates-io"
,(origin
(method url-fetch)
(uri (crate-uri "crates-io" "0.4.0"))
(sha256
(base32
"0kk6abp1qbpv44hkq1yjp7xgpzjzafs83i1l26ycr0aph1gbwig9"))))
("rust-git2-curl"
,(origin
(method url-fetch)
(uri (crate-uri "git2-curl" "0.7.0"))
(sha256
(base32
"13mzqp4rd81zp78261rlq23iw9aaysdr56484y1yy2xzhk3nnrv8"))))
("rust-bufstream"
,(origin
(method url-fetch)
(uri (crate-uri "bufstream" "0.1.2"))
(sha256
(base32
"0x6h27md1fwabbhbycfldj0wklrpjr520z9p0cpzm60fzzidnj3v"))))
("rust-hamcrest"
,(origin
(method url-fetch)
(uri (crate-uri "hamcrest" "0.1.1"))
(sha256
(base32
"1m49rf7bnkx0qxja56slrjh44zi4z5bjz5x4pblqjw265828y25z"))))
("rust-num"
,(origin
(method url-fetch)
(uri (crate-uri "num" "0.1.36"))
(sha256
(base32
"081i1r3mdz6jasqd7qwraqqfqa3sdpvdvxl1xq0s7ip714xw1rxx"))))
("rust-num-traits"
,(origin
(method url-fetch)
(uri (crate-uri "num-traits" "0.1.36"))
(sha256
(base32
"07688sp4z40p14lh5ywvrpm4zq8kcxzhjks8sg33jsr5da2l4sm1"))))
("rust-num-integer"
,(origin
(method url-fetch)
(uri (crate-uri "num-integer" "0.1.32"))
(sha256
(base32
"14pvaaawl0pgdcgh4dfdd67lz58yxlfl95bry86h28pjnfzxj97v"))))
("rust-num-bigint"
,(origin
(method url-fetch)
(uri (crate-uri "num-bigint" "0.1.35"))
(sha256
(base32
"0jayfkdm33p4zvcahlv46zdfhlzg053mpw32abf2lz0z8xw47cc8"))))
("rust-num-rational"
,(origin
(method url-fetch)
(uri (crate-uri "num-rational" "0.1.35"))
(sha256
(base32
"1bwaygv64qg7i78yqg0v4d0amfhamj598rpy4yxjz9rlhcxn1zsl"))))
("rust-num-iter"
,(origin
(method url-fetch)
(uri (crate-uri "num-iter" "0.1.32"))
(sha256
(base32
"0p74nj5c1mc33h9lx4wpmlmggmn5lnkhxv1225g0aix8d6ciqyi8"))))
("rust-num-complex"
,(origin
(method url-fetch)
(uri (crate-uri "num-complex" "0.1.35"))
(sha256
(base32
"0bzrjfppnnzf9vmkpklhp2dw9sb1lqzydb8r6k83z76i9l2qxizh"))))))
(arguments (arguments
`(#:cargo ,cargo-bootstrap `(#:cargo ,cargo-bootstrap
#:tests? #f ; FIXME #:tests? #f ; FIXME
@ -317,12 +794,41 @@ safety and thread safety guarantees.")
(delete 'patch-source-shebangs) (delete 'patch-source-shebangs)
(delete 'patch-generated-file-shebangs) (delete 'patch-generated-file-shebangs)
(delete 'patch-usr-bin-file) (delete 'patch-usr-bin-file)
(add-after 'unpack 'unpack-submodule-sources
(lambda* (#:key inputs #:allow-other-keys)
(let ((unpack (lambda (source target)
(mkdir-p target)
(with-directory-excursion target
(zero? (system* "tar" "xf"
source
"--strip-components=1"))))))
(mkdir "vendor")
(for-each (lambda (p)
(let ((name (car p)))
(if (string-prefix? "rust-" name)
(let ((rsrc (string-append "vendor/"
(string-drop name
(string-length "rust-")))))
(unpack (assoc-ref inputs name) rsrc)
(system* "touch" (string-append rsrc "/.cargo-ok"))
(generate-checksums rsrc (assoc-ref inputs name)))))) inputs))))
;; Set CARGO_HOME to use the vendored dependencies. ;; Set CARGO_HOME to use the vendored dependencies.
(add-after 'unpack 'set-cargo-home (add-after 'unpack 'set-cargo-home
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let* ((gcc (assoc-ref inputs "gcc")) (let* ((gcc (assoc-ref inputs "gcc"))
(cc (string-append gcc "/bin/gcc"))) (cc (string-append gcc "/bin/gcc")))
(mkdir "cargohome")
(setenv "CARGO_HOME" (string-append (getcwd) "/cargohome")) (setenv "CARGO_HOME" (string-append (getcwd) "/cargohome"))
(call-with-output-file "cargohome/config"
(lambda (p)
(format p "
[source.crates-io]
registry = 'https://github.com/rust-lang/crates.io-index'
replace-with = 'vendored-sources'
[source.vendored-sources]
directory = 'vendor'
")))
(setenv "CMAKE_C_COMPILER" cc) (setenv "CMAKE_C_COMPILER" cc)
(setenv "CC" cc)) (setenv "CC" cc))
#t))))) #t)))))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -73,7 +73,7 @@
;; The 'skribilo' command needs them, and for people using Skribilo as a ;; The 'skribilo' command needs them, and for people using Skribilo as a
;; library, these inputs are needed as well. ;; library, these inputs are needed as well.
(propagated-inputs `(("guile-reader" ,guile-reader) (propagated-inputs `(("guile-reader" ,guile2.0-reader)
("guile-lib" ,guile-lib))) ("guile-lib" ,guile-lib)))
(home-page "http://www.nongnu.org/skribilo/") (home-page "http://www.nongnu.org/skribilo/")

View file

@ -102,6 +102,7 @@
(uri (string-append (uri (string-append
"https://www.freedesktop.org/software/virgl/" "https://www.freedesktop.org/software/virgl/"
"virglrenderer-" version ".tar.bz2")) "virglrenderer-" version ".tar.bz2"))
(patches (search-patches "virglrenderer-CVE-2017-6386.patch"))
(sha256 (sha256
(base32 (base32
"06kf0q4l52gzx5p63l8850hff8pmhp7xv1hk8zgx2apbw18y6jd5")))) "06kf0q4l52gzx5p63l8850hff8pmhp7xv1hk8zgx2apbw18y6jd5"))))

View file

@ -31,6 +31,7 @@
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system r) #:use-module (guix build-system r)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
@ -99,9 +100,12 @@ can be imported from spreadsheets, text files and database sources and it can
be output in text, PostScript, PDF or HTML.") be output in text, PostScript, PDF or HTML.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public r ;; Update this package together with the set of recommended packages: r-boot,
;; r-class, r-cluster, r-codetools, r-foreign, r-kernsmooth, r-lattice,
;; r-mass, r-matrix, r-mgcv, r-nlme, r-nnet, r-rpart, r-spatial, r-survival.
(define-public r-minimal
(package (package
(name "r") (name "r-minimal")
(version "3.3.3") (version "3.3.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -129,17 +133,46 @@ be output in text, PostScript, PDF or HTML.")
(substitute* "src/scripts/R.sh.in" (substitute* "src/scripts/R.sh.in"
(("uname") uname-bin))) (("uname") uname-bin)))
#t)) #t))
(add-after 'unpack 'build-recommended-packages-reproducibly (add-after 'unpack 'build-reproducibly
(lambda _ (lambda _
(substitute* "src/library/Recommended/Makefile.in" ;; The documentation contains time stamps to demonstrate
(("INSTALL_OPTS =(.*)" line rest ) ;; documentation generation in different phases.
(string-append "INSTALL_OPTS = --built-timestamp=1970-01-01" (substitute* "src/library/tools/man/Rd2HTML.Rd"
rest))) (("\\\\%Y-\\\\%m-\\\\%d at \\\\%H:\\\\%M:\\\\%S")
;; Ensure that gzipped files are reproducible "(removed for reproducibility)"))
;; Remove timestamp from tracing environment. This fixes
;; reproducibility of "methods.rd{b,x}".
(substitute* "src/library/methods/R/trace.R"
(("dateCreated = Sys.time\\(\\)")
"dateCreated = as.POSIXct(\"1970-1-1 00:00:00\", tz = \"UTC\")"))
;; Ensure that gzipped files are reproducible.
(substitute* '("src/library/grDevices/Makefile.in" (substitute* '("src/library/grDevices/Makefile.in"
"doc/manual/Makefile.in") "doc/manual/Makefile.in")
(("R_GZIPCMD\\)" line) (("R_GZIPCMD\\)" line)
(string-append line " -n"))) (string-append line " -n")))
;; The "srcfile" procedure in "src/library/base/R/srcfile.R"
;; queries the mtime of a given file and records it in an object.
;; This is acceptable at runtime to detect stale source files,
;; but it destroys reproducibility at build time.
;;
;; Instead of disabling this feature, which may have unexpected
;; consequences, we reset the mtime of generated files before
;; passing them to the "srcfile" procedure.
(substitute* "src/library/Makefile.in"
(("@\\(cd base && \\$\\(MAKE\\) mkdesc\\)" line)
(string-append line "\n find $(top_builddir)/library/tools | xargs touch -d '1970-01-01'; \n"))
(("@\\$\\(MAKE\\) Rdobjects" line)
(string-append "@find $(srcdir)/tools | xargs touch -d '1970-01-01'; \n "
line)))
(substitute* "src/library/tools/Makefile.in"
(("@\\$\\(INSTALL_DATA\\) all.R \\$\\(top_builddir\\)/library/\\$\\(pkg\\)/R/\\$\\(pkg\\)" line)
(string-append
line
"\n find $(srcdir)/$(pkg) $(top_builddir)/library/$(pkg) | xargs touch -d \"1970-01-01\"; \n")))
;; This library is installed using "install_package_description", ;; This library is installed using "install_package_description",
;; so we need to pass the "builtStamp" argument. ;; so we need to pass the "builtStamp" argument.
(substitute* "src/library/tools/Makefile.in" (substitute* "src/library/tools/Makefile.in"
@ -163,7 +196,12 @@ be output in text, PostScript, PDF or HTML.")
(add-after 'build 'install-info (add-after 'build 'install-info
(lambda _ (zero? (system* "make" "install-info"))))) (lambda _ (zero? (system* "make" "install-info")))))
#:configure-flags #:configure-flags
'("--with-cairo" '(;; Do not build the recommended packages. The build system creates
;; random temporary directories and embeds their names in some
;; package files. We build these packages with the r-build-system
;; instead.
"--without-recommended-packages"
"--with-cairo"
"--with-blas=-lopenblas" "--with-blas=-lopenblas"
"--with-libpng" "--with-libpng"
"--with-jpeglib" "--with-jpeglib"
@ -221,6 +259,343 @@ publication-quality data plots. A large amount of 3rd-party packages are
available, greatly increasing its breadth and scope.") available, greatly increasing its breadth and scope.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public r-boot
(package
(name "r-boot")
(version "1.3-18")
(source
(origin
(method url-fetch)
(uri (cran-uri "boot" version))
(sha256
(base32
"0pi348vvgzn1ny54yxhw6kq6nl7rx9bpr9ji1a6wqs8ah5zj7z8j"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/boot")
(synopsis "Bootstrap functions for R")
(description
"This package provides functions and datasets for bootstrapping from the
book \"Bootstrap Methods and Their Application\" by A.C. Davison and
D.V. Hinkley (1997, CUP), originally written by Angelo Canty for S.")
;; Unlimited distribution
(license (license:non-copyleft "file://R/bootfuns.q"))))
(define-public r-mass
(package
(name "r-mass")
(version "7.3-45")
(source
(origin
(method url-fetch)
(uri (cran-uri "MASS" version))
(sha256
(base32
"13lp5919h2bnpmf8rbmkar8a41yx62fnx66pkvljvqf60wa29qsx"))))
(properties `((upstream-name . "MASS")))
(build-system r-build-system)
(home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
(synopsis "Support functions and datasets for Venables and Ripley's MASS")
(description
"This package provides functions and datasets for the book \"Modern
Applied Statistics with S\" (4th edition, 2002) by Venables and Ripley.")
;; Either version may be picked.
(license (list license:gpl2 license:gpl3))))
(define-public r-class
(package
(name "r-class")
(version "7.3-14")
(source
(origin
(method url-fetch)
(uri (cran-uri "class" version))
(sha256
(base32
"173b8a16lh1i0zjmr784l0xr0azp9v8bgslh12hfdswbq7dpdf0q"))))
(build-system r-build-system)
(propagated-inputs
`(("r-mass" ,r-mass)))
(home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
(synopsis "R functions for classification")
(description
"This package provides various functions for classification, including
k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.")
;; Either of the two versions can be picked.
(license (list license:gpl2 license:gpl3))))
(define-public r-cluster
(package
(name "r-cluster")
(version "2.0.5")
(source
(origin
(method url-fetch)
(uri (cran-uri "cluster" version))
(sha256
(base32
"1bkvqmv8h2c423q9ag2afb6s9j2vcdlxsf559zzbimraphrr2c2b"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/cluster")
(synopsis "Methods for cluster analysis")
(description
"This package provides methods for cluster analysis. It is a much
extended version of the original from Peter Rousseeuw, Anja Struyf and Mia
Hubert, based on Kaufman and Rousseeuw (1990) \"Finding Groups in Data\".")
(license license:gpl2+)))
(define-public r-codetools
(package
(name "r-codetools")
(version "0.2-15")
(source
(origin
(method url-fetch)
(uri (cran-uri "codetools" version))
(sha256
(base32
"0h7sjmvvsi35041jp47cxhsqzgf1y8jrw6fxii7n26i8g7nrh1sf"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/codetools")
(synopsis "Code analysis tools for R")
(description "This package provides code analysis tools for R.")
;; Any version of the GPL.
(license (list license:gpl2+ license:gpl3+))))
(define-public r-foreign
(package
(name "r-foreign")
(version "0.8-67")
(source
(origin
(method url-fetch)
(uri (cran-uri "foreign" version))
(sha256
(base32
"1mcrm2pydimbyjhkrw5h380bifj1jhwzifph1xgh90asf3lvd1xd"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/foreign")
(synopsis "Read data stored by other statistics software")
(description
"This package provides functions for reading and writing data stored by
some versions of Epi Info, Minitab, S, SAS, SPSS, Stata, Systat and Weka and
for reading and writing some dBase files.")
(license license:gpl2+)))
(define-public r-kernsmooth
(package
(name "r-kernsmooth")
(version "2.23-15")
(source
(origin
(method url-fetch)
(uri (cran-uri "KernSmooth" version))
(sha256
(base32
"1xhha8kw10jv8pv8b61hb5in9qiw3r2a9kdji3qlm991s4zd4wlb"))))
(properties `((upstream-name . "KernSmooth")))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/KernSmooth")
(synopsis "Functions for kernel smoothing")
(description
"This package provides functions for kernel smoothing (and density
estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995)
\"Kernel Smoothing\".")
;; Unlimited distribution
(license (license:non-copyleft "file://LICENCE.note"))))
(define-public r-lattice
(package
(name "r-lattice")
(version "0.20-34")
(source (origin
(method url-fetch)
(uri (cran-uri "lattice" version))
(sha256
(base32
"0615h69czr73k47whhzimf1qxv5qk0cabcrkljwhyrn6m6piq6ja"))))
(build-system r-build-system)
(home-page "http://lattice.r-forge.r-project.org/")
(synopsis "High-level data visualization system")
(description
"The lattice package provides a powerful and elegant high-level data
visualization system inspired by Trellis graphics, with an emphasis on
multivariate data. Lattice is sufficient for typical graphics needs, and is
also flexible enough to handle most nonstandard requirements.")
(license license:gpl2+)))
(define-public r-matrix
(package
(name "r-matrix")
(version "1.2-7.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "Matrix" version))
(sha256
(base32
"09rd51na9spz0lm1lylkfhw43w7c922b83m4jsggmpg3pbd6dssa"))))
(properties `((upstream-name . "Matrix")))
(build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
(home-page "http://Matrix.R-forge.R-project.org/")
(synopsis "Sparse and dense matrix classes and methods")
(description
"This package provides classes and methods for dense and sparse matrices
and operations on them using LAPACK and SuiteSparse.")
(license license:gpl2+)))
(define-public r-nlme
(package
(name "r-nlme")
(version "3.1-131")
(source
(origin
(method url-fetch)
(uri (cran-uri "nlme" version))
(sha256
(base32
"0k2nvdzhic6bzhfsbq6la6q6a1i5nlj4pnh6lpdxiiwvxdks3nkr"))))
(build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
(native-inputs
`(("gfortran" ,gfortran)))
(home-page "http://cran.r-project.org/web/packages/nlme")
(synopsis "Linear and nonlinear mixed effects models")
(description
"This package provides tools to fit and compare Gaussian linear and
nonlinear mixed-effects models.")
(license license:gpl2+)))
(define-public r-mgcv
(package
(name "r-mgcv")
(version "1.8-16")
(source
(origin
(method url-fetch)
(uri (cran-uri "mgcv" version))
(sha256
(base32
"0pj31gdwra7nv8spys4pfcbmsik99q1y1d0d2g37ywc3sz5s0rlj"))))
(build-system r-build-system)
(propagated-inputs
`(("r-matrix" ,r-matrix)
("r-nlme" ,r-nlme)))
(home-page "http://cran.r-project.org/web/packages/mgcv")
(synopsis "Mixed generalised additive model computation")
(description
"GAMs, GAMMs and other generalized ridge regression with multiple smoothing
parameter estimation by GCV, REML or UBRE/AIC. The library includes a
@code{gam()} function, a wide variety of smoothers, JAGS support and
distributions beyond the exponential family.")
(license license:gpl2+)))
(define-public r-nnet
(package
(name "r-nnet")
(version "7.3-12")
(source
(origin
(method url-fetch)
(uri (cran-uri "nnet" version))
(sha256
(base32
"17amqnw9dpap2w8ivx53hxha2xrm0drwfnj32li0xk41hlz548r7"))))
(build-system r-build-system)
(home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
(synopsis "Feed-forward neural networks and multinomial log-linear models")
(description
"This package provides functions for feed-forward neural networks with a
single hidden layer, and for multinomial log-linear models.")
(license (list license:gpl2+ license:gpl3+))))
(define-public r-rpart
(package
(name "r-rpart")
(version "4.1-10")
(source
(origin
(method url-fetch)
(uri (cran-uri "rpart" version))
(sha256
(base32
"119dvh2cpab4vq9blvbkil5hgq6w018amiwlda3ii0fki39axpf5"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/rpart")
(synopsis "Recursive partitioning and regression trees")
(description
"This package provides recursive partitioning functions for
classification, regression and survival trees.")
(license (list license:gpl2+ license:gpl3+))))
(define-public r-spatial
(package
(name "r-spatial")
(version "7.3-11")
(source
(origin
(method url-fetch)
(uri (cran-uri "spatial" version))
(sha256
(base32
"04aw8j533sn63ybyrf4hyhrqm4058vfcb7yhjy07kq92mk94hi32"))))
(build-system r-build-system)
(home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
(synopsis "Functions for kriging and point pattern analysis")
(description
"This package provides functions for kriging and point pattern
analysis.")
;; Either version may be picked.
(license (list license:gpl2 license:gpl3))))
(define-public r-survival
(package
(name "r-survival")
(version "2.40-1")
(source
(origin
(method url-fetch)
(uri (cran-uri "survival" version))
(sha256
(base32
"10pf0kq0g66k5rgizrvh29mq3r84acljw2jgrv5yp6z38xw23mci"))))
(build-system r-build-system)
(propagated-inputs
`(("r-matrix" ,r-matrix)))
(home-page "https://github.com/therneau/survival")
(synopsis "Survival analysis")
(description
"This package contains the core survival analysis routines, including
definition of Surv objects, Kaplan-Meier and Aalen-Johansen (multi-state)
curves, Cox models, and parametric accelerated failure time models.")
(license license:lgpl2.0+)))
(define-public r
(package (inherit r-minimal)
(name "r")
(source #f)
(build-system trivial-build-system)
(arguments '(#:builder (mkdir %output)))
(propagated-inputs
`(("r-minimal" ,r-minimal)
("r-boot" ,r-boot)
("r-class" ,r-class)
("r-cluster" ,r-cluster)
("r-codetools" ,r-codetools)
("r-foreign" ,r-foreign)
("r-kernsmooth" ,r-kernsmooth)
("r-lattice" ,r-lattice)
("r-mass" ,r-mass)
("r-matrix" ,r-matrix)
("r-mgcv" ,r-mgcv)
("r-nlme" ,r-nlme)
("r-nnet" ,r-nnet)
("r-rpart" ,r-rpart)
("r-spatial" ,r-spatial)
("r-survival" ,r-survival)))))
(define-public r-bit (define-public r-bit
(package (package
(name "r-bit") (name "r-bit")
@ -460,49 +835,6 @@ and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see
'citation(\"Rcpp\")' for details on these last two.") 'citation(\"Rcpp\")' for details on these last two.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public r-matrix
(package
(name "r-matrix")
(version "1.2-7.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "Matrix" version))
(sha256
(base32
"09rd51na9spz0lm1lylkfhw43w7c922b83m4jsggmpg3pbd6dssa"))))
(properties `((upstream-name . "Matrix")))
(build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
(home-page "http://Matrix.R-forge.R-project.org/")
(synopsis "Sparse and dense matrix classes and methods")
(description
"This package provides classes and methods for dense and sparse matrices
and operations on them using LAPACK and SuiteSparse.")
(license license:gpl2+)))
(define-public r-mgcv
(package
(name "r-mgcv")
(version "1.8-16")
(source
(origin
(method url-fetch)
(uri (cran-uri "mgcv" version))
(sha256
(base32
"0pj31gdwra7nv8spys4pfcbmsik99q1y1d0d2g37ywc3sz5s0rlj"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/mgcv")
(synopsis "Mixed generalised additive model computation")
(description
"GAMs, GAMMs and other generalized ridge regression with multiple smoothing
parameter estimation by GCV, REML or UBRE/AIC. The library includes a
@code{gam()} function, a wide variety of smoothers, JAGS support and
distributions beyond the exponential family.")
(license license:gpl2+)))
(define-public r-permute (define-public r-permute
(package (package
(name "r-permute") (name "r-permute")
@ -722,6 +1054,7 @@ legends.")
("r-gtable" ,r-gtable) ("r-gtable" ,r-gtable)
("r-plyr" ,r-plyr) ("r-plyr" ,r-plyr)
("r-lazyeval" ,r-lazyeval) ("r-lazyeval" ,r-lazyeval)
("r-mass" ,r-mass)
("r-tibble" ,r-tibble) ("r-tibble" ,r-tibble)
("r-reshape2" ,r-reshape2) ("r-reshape2" ,r-reshape2)
("r-scales" ,r-scales) ("r-scales" ,r-scales)
@ -1342,6 +1675,8 @@ side.")
(base32 (base32
"0lafrmq1q7x026m92h01hc9cjjiximqqi3v1g2hw7ai9vf7i897m")))) "0lafrmq1q7x026m92h01hc9cjjiximqqi3v1g2hw7ai9vf7i897m"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
(home-page "http://cran.r-project.org/web/packages/locfit") (home-page "http://cran.r-project.org/web/packages/locfit")
(synopsis "Local regression, likelihood and density estimation") (synopsis "Local regression, likelihood and density estimation")
(description (description
@ -1519,6 +1854,8 @@ inference for statistical models.")
(base32 (base32
"14a4a8df4ygj05h37chmdn8kzcqs07fpbflxfrq530563mrza7yl")))) "14a4a8df4ygj05h37chmdn8kzcqs07fpbflxfrq530563mrza7yl"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
(home-page "http://cran.r-project.org/web/packages/coda") (home-page "http://cran.r-project.org/web/packages/coda")
(synopsis "This is a package for Output Analysis and Diagnostics for MCMC") (synopsis "This is a package for Output Analysis and Diagnostics for MCMC")
(description "This package provides functions for summarizing and plotting (description "This package provides functions for summarizing and plotting
@ -2028,26 +2365,6 @@ scaling functions for R.")
"This package provides an integration of base and grid graphics for R.") "This package provides an integration of base and grid graphics for R.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public r-lattice
(package
(name "r-lattice")
(version "0.20-34")
(source (origin
(method url-fetch)
(uri (cran-uri "lattice" version))
(sha256
(base32
"0615h69czr73k47whhzimf1qxv5qk0cabcrkljwhyrn6m6piq6ja"))))
(build-system r-build-system)
(home-page "http://lattice.r-forge.r-project.org/")
(synopsis "High-level data visualization system")
(description
"The lattice package provides a powerful and elegant high-level data
visualization system inspired by Trellis graphics, with an emphasis on
multivariate data. Lattice is sufficient for typical graphics needs, and is
also flexible enough to handle most nonstandard requirements.")
(license license:gpl2+)))
(define-public r-latticeextra (define-public r-latticeextra
(package (package
(name "r-latticeextra") (name "r-latticeextra")
@ -2687,6 +3004,8 @@ flexible than the orphaned \"base64\" package.")
(base32 (base32
"1qbcn0ix85pmk296jhpi419kvh06vxm5cq24yk013ps3g7fyi0si")))) "1qbcn0ix85pmk296jhpi419kvh06vxm5cq24yk013ps3g7fyi0si"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-matrix" ,r-matrix)))
(home-page "http://cran.r-project.org/web/packages/irlba") (home-page "http://cran.r-project.org/web/packages/irlba")
(synopsis "Methods for eigendecomposition of large matrices") (synopsis "Methods for eigendecomposition of large matrices")
(description (description
@ -2707,10 +3026,11 @@ analysis of large sparse or dense matrices.")
(base32 (base32
"1cbpzmbv837fvq88rgn6mgzgr9f1wqp9fg8gh2kkmngvr1957a9c")))) "1cbpzmbv837fvq88rgn6mgzgr9f1wqp9fg8gh2kkmngvr1957a9c"))))
(build-system r-build-system) (build-system r-build-system)
(inputs (inputs
`(("gfortran" ,gfortran))) `(("gfortran" ,gfortran)))
(propagated-inputs (propagated-inputs
`(("r-foreach" ,r-foreach))) `(("r-foreach" ,r-foreach)
("r-matrix" ,r-matrix)))
(home-page "http://www.jstatsoft.org/v33/i01") (home-page "http://www.jstatsoft.org/v33/i01")
(synopsis "Lasso and elastic-net regularized generalized linear models") (synopsis "Lasso and elastic-net regularized generalized linear models")
(description (description
@ -2828,6 +3148,8 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.")
(base32 (base32
"1069qwj9gsjq6par2cgfah8nn5x2w38830761x1f7mqpmk0gnj3h")))) "1069qwj9gsjq6par2cgfah8nn5x2w38830761x1f7mqpmk0gnj3h"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-class" ,r-class)))
(home-page "http://cran.r-project.org/web/packages/e1071") (home-page "http://cran.r-project.org/web/packages/e1071")
(synopsis "Miscellaneous functions for probability theory") (synopsis "Miscellaneous functions for probability theory")
(description (description
@ -3439,6 +3761,9 @@ from within R.")
(("if isnan\\(lambda\\) \\{") (("if isnan\\(lambda\\) \\{")
"if (isnan(lambda)) {")) "if (isnan(lambda)) {"))
#t))))) #t)))))
(propagated-inputs
`(("r-lattice" ,r-lattice)
("r-matrix" ,r-matrix)))
(home-page "http://spams-devel.gforge.inria.fr") (home-page "http://spams-devel.gforge.inria.fr")
(synopsis "Toolbox for solving sparse estimation problems") (synopsis "Toolbox for solving sparse estimation problems")
(description "SPAMS (SPArse Modeling Software) is an optimization toolbox (description "SPAMS (SPArse Modeling Software) is an optimization toolbox
@ -3456,45 +3781,6 @@ following problems:
@end enumerate\n") @end enumerate\n")
(license license:gpl3+))) (license license:gpl3+)))
(define-public r-rpart
(package
(name "r-rpart")
(version "4.1-10")
(source
(origin
(method url-fetch)
(uri (cran-uri "rpart" version))
(sha256
(base32
"119dvh2cpab4vq9blvbkil5hgq6w018amiwlda3ii0fki39axpf5"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/rpart")
(synopsis "Recursive partitioning and regression trees")
(description
"This package provides recursive partitioning functions for
classification, regression and survival trees.")
(license (list license:gpl2+ license:gpl3+))))
(define-public r-survival
(package
(name "r-survival")
(version "2.40-1")
(source
(origin
(method url-fetch)
(uri (cran-uri "survival" version))
(sha256
(base32
"10pf0kq0g66k5rgizrvh29mq3r84acljw2jgrv5yp6z38xw23mci"))))
(build-system r-build-system)
(home-page "https://github.com/therneau/survival")
(synopsis "Survival analysis")
(description
"This package contains the core survival analysis routines, including
definition of Surv objects, Kaplan-Meier and Aalen-Johansen (multi-state)
curves, Cox models, and parametric accelerated failure time models.")
(license license:lgpl2.0+)))
(define-public r-base64 (define-public r-base64
(package (package
(name "r-base64") (name "r-base64")
@ -3536,17 +3822,20 @@ package instead.")
`(("r-acepack" ,r-acepack) `(("r-acepack" ,r-acepack)
("r-base64" ,r-base64) ("r-base64" ,r-base64)
("r-base64enc" ,r-base64enc) ("r-base64enc" ,r-base64enc)
("r-cluster" ,r-cluster)
("r-data-table" ,r-data-table) ("r-data-table" ,r-data-table)
("r-foreign" ,r-foreign)
("r-formula" ,r-formula) ("r-formula" ,r-formula)
("r-ggplot2" ,r-ggplot2) ("r-ggplot2" ,r-ggplot2)
("r-gridextra" ,r-gridextra) ("r-gridextra" ,r-gridextra)
("r-gtable" ,r-gtable) ("r-gtable" ,r-gtable)
;; Hmisc needs survival >= 2.40.1, so it cannot use the survival ("r-lattice" ,r-lattice)
;; package that comes with R 3.3.2.
("r-survival" ,r-survival)
("r-latticeextra" ,r-latticeextra) ("r-latticeextra" ,r-latticeextra)
("r-htmltable" ,r-htmltable) ("r-htmltable" ,r-htmltable)
("r-htmltools" ,r-htmltools) ("r-htmltools" ,r-htmltools)
("r-nnet" ,r-nnet)
("r-rpart" ,r-rpart)
("r-survival" ,r-survival)
("r-viridis" ,r-viridis))) ("r-viridis" ,r-viridis)))
(home-page "http://biostat.mc.vanderbilt.edu/Hmisc") (home-page "http://biostat.mc.vanderbilt.edu/Hmisc")
(synopsis "Miscellaneous data analysis and graphics functions") (synopsis "Miscellaneous data analysis and graphics functions")
@ -3831,6 +4120,8 @@ estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995)
(base32 (base32
"167m142rwwfy8b9hnfc3fi28dcsdjk61g1crqhll6sh5xmgnfn28")))) "167m142rwwfy8b9hnfc3fi28dcsdjk61g1crqhll6sh5xmgnfn28"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
(home-page "http://zoo.R-Forge.R-project.org/") (home-page "http://zoo.R-Forge.R-project.org/")
(synopsis "S3 infrastructure for regular and irregular time series") (synopsis "S3 infrastructure for regular and irregular time series")
(description "This package contains an S3 class with methods for totally (description "This package contains an S3 class with methods for totally
@ -4097,7 +4388,9 @@ letters, as is often required for scientific publications.")
"133rr17ywmlhsc6457hs8qxi8ng443ql9ashxpwc8875gjhv1x32")))) "133rr17ywmlhsc6457hs8qxi8ng443ql9ashxpwc8875gjhv1x32"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-segmented" ,r-segmented))) `(("r-boot" ,r-boot)
("r-mass" ,r-mass)
("r-segmented" ,r-segmented)))
(home-page "http://cran.r-project.org/web/packages/mixtools") (home-page "http://cran.r-project.org/web/packages/mixtools")
(synopsis "Tools for analyzing finite mixture models") (synopsis "Tools for analyzing finite mixture models")
(description (description
@ -4227,7 +4520,9 @@ to change in the future.")
"1i205yw3kkxs27gqcs6zx0c2mh16p332a2p06wq6fdzb20bazg3z")))) "1i205yw3kkxs27gqcs6zx0c2mh16p332a2p06wq6fdzb20bazg3z"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-modeltools" ,r-modeltools))) `(("r-lattice" ,r-lattice)
("r-modeltools" ,r-modeltools)
("r-nnet" ,r-nnet)))
(home-page "http://cran.r-project.org/web/packages/flexmix") (home-page "http://cran.r-project.org/web/packages/flexmix")
(synopsis "Flexible mixture modeling") (synopsis "Flexible mixture modeling")
(description (description
@ -4274,7 +4569,8 @@ and resampling-based inference.")
"0qjsxrx6yv338bxm4ki0w9h8hind1l98abdrz828588bwj02jya1")))) "0qjsxrx6yv338bxm4ki0w9h8hind1l98abdrz828588bwj02jya1"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-mclust" ,r-mclust))) `(("r-mass" ,r-mass)
("r-mclust" ,r-mclust)))
(home-page "https://cran.r-project.org/web/packages/prabclus") (home-page "https://cran.r-project.org/web/packages/prabclus")
(synopsis "Parametric bootstrap tests for spatial neighborhood clustering") (synopsis "Parametric bootstrap tests for spatial neighborhood clustering")
(description (description
@ -4363,9 +4659,12 @@ of the points.")
"15m0p9l9w2v7sl0cnzyg81i2fmx3hrhvr3371544mwn3fpsca5sx")))) "15m0p9l9w2v7sl0cnzyg81i2fmx3hrhvr3371544mwn3fpsca5sx"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-diptest" ,r-diptest) `(("r-class" ,r-class)
("r-cluster" ,r-cluster)
("r-diptest" ,r-diptest)
("r-flexmix" ,r-flexmix) ("r-flexmix" ,r-flexmix)
("r-kernlab" ,r-kernlab) ("r-kernlab" ,r-kernlab)
("r-mass" ,r-mass)
("r-mclust" ,r-mclust) ("r-mclust" ,r-mclust)
("r-mvtnorm" ,r-mvtnorm) ("r-mvtnorm" ,r-mvtnorm)
("r-prabclus" ,r-prabclus) ("r-prabclus" ,r-prabclus)
@ -4484,7 +4783,8 @@ based on an interface to Fortran implementations by M. J. D. Powell.")
(properties `((upstream-name . "RcppEigen"))) (properties `((upstream-name . "RcppEigen")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-rcpp" ,r-rcpp))) `(("r-rcpp" ,r-rcpp)
("r-matrix" ,r-matrix)))
(home-page "http://eigen.tuxfamily.org") (home-page "http://eigen.tuxfamily.org")
(synopsis "Rcpp integration for the Eigen templated linear algebra library") (synopsis "Rcpp integration for the Eigen templated linear algebra library")
(description (description
@ -4529,6 +4829,8 @@ metrics for evaluating models.")
"0cyfvhci2p1vr2x52ymkyqqs63x1qchn856dh2j94yb93r08x1zy")))) "0cyfvhci2p1vr2x52ymkyqqs63x1qchn856dh2j94yb93r08x1zy"))))
(properties `((upstream-name . "MatrixModels"))) (properties `((upstream-name . "MatrixModels")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-matrix" ,r-matrix)))
(home-page "https://cran.r-project.org/web/packages/MatrixModels") (home-page "https://cran.r-project.org/web/packages/MatrixModels")
(synopsis "Modelling with sparse and dense matrices") (synopsis "Modelling with sparse and dense matrices")
(description (description
@ -4606,7 +4908,9 @@ algorithms.")
("r-rcppeigen" ,r-rcppeigen))) ("r-rcppeigen" ,r-rcppeigen)))
(propagated-inputs (propagated-inputs
`(("r-minqa" ,r-minqa) `(("r-minqa" ,r-minqa)
("r-nloptr" ,r-nloptr))) ("r-nloptr" ,r-nloptr)
("r-mass" ,r-mass)
("r-nlme" ,r-nlme)))
(home-page "http://cran.r-project.org/web/packages/lme4") (home-page "http://cran.r-project.org/web/packages/lme4")
(synopsis "Linear mixed-effects models using eigen and S4") (synopsis "Linear mixed-effects models using eigen and S4")
(description (description
@ -4629,7 +4933,9 @@ C++ library for numerical linear algebra and RcppEigen glue.")
"00cw18q7wvddzjrbxz917wkix6r7672vi2wmsp4gwgzady8vha4x")))) "00cw18q7wvddzjrbxz917wkix6r7672vi2wmsp4gwgzady8vha4x"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-lme4" ,r-lme4))) `(("r-lme4" ,r-lme4)
("r-mass" ,r-mass)
("r-matrix" ,r-matrix)))
(home-page "http://people.math.aau.dk/~sorenh/software/pbkrtest/") (home-page "http://people.math.aau.dk/~sorenh/software/pbkrtest/")
(synopsis "Methods for linear mixed model comparison") (synopsis "Methods for linear mixed model comparison")
(description (description
@ -4651,7 +4957,10 @@ bootstrap test for generalized linear mixed models.")
"0a6v7rsd1xsdyapnfqy37m7c4kx9wslkzsizc9k0lmnba0bwyfgx")))) "0a6v7rsd1xsdyapnfqy37m7c4kx9wslkzsizc9k0lmnba0bwyfgx"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-pbkrtest" ,r-pbkrtest) `(("r-mass" ,r-mass)
("r-mgcv" ,r-mgcv)
("r-nnet" ,r-nnet)
("r-pbkrtest" ,r-pbkrtest)
("r-quantreg" ,r-quantreg))) ("r-quantreg" ,r-quantreg)))
(home-page "https://r-forge.r-project.org/projects/car/") (home-page "https://r-forge.r-project.org/projects/car/")
(synopsis "Companion to applied regression") (synopsis "Companion to applied regression")
@ -4790,7 +5099,8 @@ multivariate case.")
"0a1b7yp4l9wf6ic5czizyl2cnxrc1virj0icr8i6m1vv23jd8jfp")))) "0a1b7yp4l9wf6ic5czizyl2cnxrc1virj0icr8i6m1vv23jd8jfp"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-mclust" ,r-mclust) `(("r-cluster" ,r-cluster)
("r-mclust" ,r-mclust)
("r-mvtnorm" ,r-mvtnorm) ("r-mvtnorm" ,r-mvtnorm)
("r-sn" ,r-sn))) ("r-sn" ,r-sn)))
(home-page "http://cran.r-project.org/web/packages/tclust") (home-page "http://cran.r-project.org/web/packages/tclust")

View file

@ -222,7 +222,7 @@ required structures.")
(substitute-keyword-arguments (package-arguments gnutls) (substitute-keyword-arguments (package-arguments gnutls)
((#:configure-flags flags) ((#:configure-flags flags)
`(cdr ,flags)))) `(cdr ,flags))))
(inputs `(("guile" ,guile-next) (inputs `(("guile" ,guile-2.2)
,@(alist-delete "guile" (package-inputs gnutls)))))) ,@(alist-delete "guile" (package-inputs gnutls))))))
(define-public openssl (define-public openssl

View file

@ -220,14 +220,14 @@ television and DVD. It is also known as AC-3.")
(define-public libx264 (define-public libx264
(package (package
(name "libx264") (name "libx264")
(version "20170224-2245") (version "20170316-2245")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.videolan.org/pub/x264/snapshots/" (uri (string-append "https://download.videolan.org/pub/x264/snapshots/"
"x264-snapshot-" version ".tar.bz2")) "x264-snapshot-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0paw8vzsy2qh5jf6xg2i1risjwyvmxgfnivly4gh0bib62cp4vib")))) "1s1nnvl3axz38sv4g09skijl6k9mbbngbb1nsh26w4dr2w2gyzad"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
@ -980,7 +980,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl (define-public youtube-dl
(package (package
(name "youtube-dl") (name "youtube-dl")
(version "2017.03.15") (version "2017.03.16")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/" (uri (string-append "https://yt-dl.org/downloads/"
@ -988,7 +988,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0h561pbphdkfalir9awp0k4fmsnzdf6kx56adb9bb0v9pfsb1y0f")))) "14nlgl0kh4mwl7sx58vd7nxr5iklxi00612lmydy91ngm6ykrpsm"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; The problem here is that the directory for the man page and completion ;; The problem here is that the directory for the man page and completion
@ -1022,7 +1022,7 @@ YouTube.com and a few more sites.")
(define-public libbluray (define-public libbluray
(package (package
(name "libbluray") (name "libbluray")
(version "0.9.3") (version "1.0.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.videolan.org/videolan/" (uri (string-append "https://download.videolan.org/videolan/"
@ -1030,7 +1030,7 @@ YouTube.com and a few more sites.")
name "-" version ".tar.bz2")) name "-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1q1whviqv5sr9nr372h31zwid1rvbfbx3z4lzr8lnj25xha6cdm6")))) "1k3lag4lxi2jjd3zh4wcb5l3hadzm54j5kagh92yzfy76p9svqzp"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--disable-bdjava") `(#:configure-flags '("--disable-bdjava")

View file

@ -54,14 +54,14 @@
(define-public wine (define-public wine
(package (package
(name "wine") (name "wine")
(version "2.3") (version "2.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://dl.winehq.org/wine/source/2.x" (uri (string-append "https://dl.winehq.org/wine/source/2.x"
"/wine-" version ".tar.xz")) "/wine-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0zh6kvs4d6d99x5qgxbb5jq2wilwzifhmib2nhq0g3ychxx5rjdg")))) "13klfadvd44zdfrzh38al99s53i02x3mlhcj5z7fq7vqwh3xzdc7"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal) ("gettext" ,gettext-minimal)

View file

@ -274,7 +274,8 @@ FILE-SYSTEM."
(options (file-system-options file-system)) (options (file-system-options file-system))
(check? (file-system-check? file-system)) (check? (file-system-check? file-system))
(create? (file-system-create-mount-point? file-system)) (create? (file-system-create-mount-point? file-system))
(dependencies (file-system-dependencies file-system))) (dependencies (file-system-dependencies file-system))
(packages (file-system-packages (list file-system))))
(and (file-system-mount? file-system) (and (file-system-mount? file-system)
(with-imported-modules '((gnu build file-systems) (with-imported-modules '((gnu build file-systems)
(guix build bournish)) (guix build bournish))
@ -284,7 +285,7 @@ FILE-SYSTEM."
,@(map dependency->shepherd-service-name dependencies))) ,@(map dependency->shepherd-service-name dependencies)))
(documentation "Check, mount, and unmount the given file system.") (documentation "Check, mount, and unmount the given file system.")
(start #~(lambda args (start #~(lambda args
#$(if create? #$(if create?
#~(mkdir-p #$target) #~(mkdir-p #$target)
#t) #t)
@ -292,11 +293,12 @@ FILE-SYSTEM."
;; Make sure fsck.ext2 & co. can be found. ;; Make sure fsck.ext2 & co. can be found.
(dynamic-wind (dynamic-wind
(lambda () (lambda ()
(setenv "PATH" ;; Dont display the PATH settings.
(string-append (with-output-to-port (%make-void-port "w")
#$e2fsprogs "/sbin:" (lambda ()
"/run/current-system/profile/sbin:" (set-path-environment-variable "PATH"
$PATH))) '("bin" "sbin")
'#$packages))))
(lambda () (lambda ()
(mount-file-system (mount-file-system
`(#$device #$title #$target #$type #$flags `(#$device #$title #$target #$type #$flags

View file

@ -80,7 +80,10 @@
network-manager-configuration-dns network-manager-configuration-dns
network-manager-service-type network-manager-service-type
connman-service connman-configuration
connman-configuration?
connman-service-type
wpa-supplicant-service-type wpa-supplicant-service-type
openvswitch-service-type openvswitch-service-type
@ -822,45 +825,54 @@ dns=" dns "
;;; Connman ;;; Connman
;;; ;;;
(define %connman-activation (define-record-type* <connman-configuration>
;; Activation gexp for Connman. connman-configuration make-connman-configuration
#~(begin connman-configuration?
(use-modules (guix build utils)) (connman connman-configuration-connman
(mkdir-p "/var/lib/connman/") (default connman))
(mkdir-p "/var/lib/connman-vpn/"))) (disable-vpn? connman-configuration-disable-vpn?
(default #f)))
(define (connman-shepherd-service connman) (define (connman-activation config)
(let ((disable-vpn? (connman-configuration-disable-vpn? config)))
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(mkdir-p "/var/lib/connman/")
(unless #$disable-vpn?
(mkdir-p "/var/lib/connman-vpn/"))))))
(define (connman-shepherd-service config)
"Return a shepherd service for Connman" "Return a shepherd service for Connman"
(list (shepherd-service (and
(documentation "Run Connman") (connman-configuration? config)
(provision '(networking)) (let ((connman (connman-configuration-connman config))
(requirement '(user-processes dbus-system loopback wpa-supplicant)) (disable-vpn? (connman-configuration-disable-vpn? config)))
(start #~(make-forkexec-constructor (list (shepherd-service
(list (string-append #$connman (documentation "Run Connman")
"/sbin/connmand") (provision '(networking))
"-n" "-r"))) (requirement
(stop #~(make-kill-destructor))))) '(user-processes dbus-system loopback wpa-supplicant))
(start #~(make-forkexec-constructor
(list (string-append #$connman
"/sbin/connmand")
"-n" "-r"
#$@(if disable-vpn? '("--noplugin=vpn") '()))))
(stop #~(make-kill-destructor)))))))
(define connman-service-type (define connman-service-type
(service-type (name 'connman) (let ((connman-package (compose list connman-configuration-connman)))
(extensions (service-type (name 'connman)
(list (service-extension shepherd-root-service-type (extensions
connman-shepherd-service) (list (service-extension shepherd-root-service-type
(service-extension dbus-root-service-type list) connman-shepherd-service)
(service-extension activation-service-type (service-extension dbus-root-service-type
(const %connman-activation)) connman-package)
;; Add connman to the system profile. (service-extension activation-service-type
(service-extension profile-service-type list))))) connman-activation)
;; Add connman to the system profile.
(define* (connman-service #:key (connman connman)) (service-extension profile-service-type
"Return a service that runs @url{https://01.org/connman,Connman}, a network connman-package))))))
connection manager.
This service adds the @var{connman} package to the global profile, providing
several the @command{connmanctl} command to interact with the daemon and
configure networking."
(service connman-service-type connman))
;;; ;;;

View file

@ -22,6 +22,8 @@
#:use-module (guix records) #:use-module (guix records)
#:use-module ((gnu build file-systems) #:use-module ((gnu build file-systems)
#:select (string->uuid uuid->string)) #:select (string->uuid uuid->string))
#:use-module (gnu packages linux)
#:use-module (gnu packages disk)
#:re-export (string->uuid #:re-export (string->uuid
uuid->string) uuid->string)
#:export (<file-system> #:export (<file-system>
@ -65,6 +67,8 @@
file-system-mapping->bind-mount file-system-mapping->bind-mount
file-system-packages
%store-mapping %store-mapping
%network-configuration-files %network-configuration-files
%network-file-mappings)) %network-file-mappings))
@ -411,4 +415,26 @@ a bind mount."
(writable? (string=? file "/etc/resolv.conf")))) (writable? (string=? file "/etc/resolv.conf"))))
%network-configuration-files)) %network-configuration-files))
(define (file-system-type-predicate type)
(lambda (fs)
(string=? (file-system-type fs) type)))
(define* (file-system-packages file-systems #:key (volatile-root? #f))
`(,@(if (find (lambda (fs)
(string-prefix? "ext" (file-system-type fs)))
file-systems)
(list e2fsck/static)
'())
,@(if (find (lambda (fs)
(string-suffix? "fat" (file-system-type fs)))
file-systems)
(list fatfsck/static)
'())
,@(if (find (file-system-type-predicate "btrfs") file-systems)
(list btrfs-progs/static)
'())
,@(if volatile-root?
(list unionfs-fuse/static)
'())))
;;; file-systems.scm ends here ;;; file-systems.scm ends here

View file

@ -272,23 +272,7 @@ loaded at boot time in the order in which they appear."
,@extra-modules)) ,@extra-modules))
(define helper-packages (define helper-packages
;; Packages to be copied on the initrd. (file-system-packages file-systems #:volatile-root? volatile-root?))
`(,@(if (find (lambda (fs)
(string-prefix? "ext" (file-system-type fs)))
file-systems)
(list e2fsck/static)
'())
,@(if (find (lambda (fs)
(string-suffix? "fat" (file-system-type fs)))
file-systems)
(list fatfsck/static)
'())
,@(if (find (file-system-type-predicate "btrfs") file-systems)
(list btrfs-progs/static)
'())
,@(if volatile-root?
(list unionfs-fuse/static)
'())))
(raw-initrd file-systems (raw-initrd file-systems
#:linux linux #:linux linux

83
guix/base16.scm Normal file
View file

@ -0,0 +1,83 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2014, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix base16)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-60)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 vlist)
#:use-module (ice-9 format)
#:export (bytevector->base16-string
base16-string->bytevector))
;;;
;;; Base 16.
;;;
(define (bytevector->base16-string bv)
"Return the hexadecimal representation of BV's contents."
(define len
(bytevector-length bv))
(let-syntax ((base16-chars (lambda (s)
(syntax-case s ()
(_
(let ((v (list->vector
(unfold (cut > <> 255)
(lambda (n)
(format #f "~2,'0x" n))
1+
0))))
v))))))
(define chars base16-chars)
(let loop ((i len)
(r '()))
(if (zero? i)
(string-concatenate r)
(let ((i (- i 1)))
(loop i
(cons (vector-ref chars (bytevector-u8-ref bv i)) r)))))))
(define base16-string->bytevector
(let ((chars->value (fold (lambda (i r)
(vhash-consv (string-ref (number->string i 16)
0)
i r))
vlist-null
(iota 16))))
(lambda (s)
"Return the bytevector whose hexadecimal representation is string S."
(define bv
(make-bytevector (quotient (string-length s) 2) 0))
(string-fold (lambda (chr i)
(let ((j (quotient i 2))
(v (and=> (vhash-assv chr chars->value) cdr)))
(if v
(if (zero? (logand i 1))
(bytevector-u8-set! bv j
(arithmetic-shift v 4))
(let ((w (bytevector-u8-ref bv j)))
(bytevector-u8-set! bv j (logior v w))))
(error "invalid hexadecimal character" chr)))
(+ i 1))
0
s)
bv)))

View file

@ -64,7 +64,7 @@ to NAME and VERSION."
#:key #:key
(tests? #t) (tests? #t)
(test-target #f) (test-target #f)
(configure-flags #f) (cargo-build-flags ''("--release"))
(phases '(@ (guix build cargo-build-system) (phases '(@ (guix build cargo-build-system)
%standard-phases)) %standard-phases))
(outputs '("out")) (outputs '("out"))
@ -89,6 +89,7 @@ to NAME and VERSION."
source)) source))
#:system ,system #:system ,system
#:test-target ,test-target #:test-target ,test-target
#:cargo-build-flags ,cargo-build-flags
#:tests? ,tests? #:tests? ,tests?
#:phases ,phases #:phases ,phases
#:outputs %outputs #:outputs %outputs

View file

@ -62,7 +62,7 @@ release corresponding to NAME and VERSION."
"Return the default R package." "Return the default R package."
;; Lazily resolve the binding to avoid a circular dependency. ;; Lazily resolve the binding to avoid a circular dependency.
(let ((r-mod (resolve-interface '(gnu packages statistics)))) (let ((r-mod (resolve-interface '(gnu packages statistics))))
(module-ref r-mod 'r))) (module-ref r-mod 'r-minimal)))
(define* (lower name (define* (lower name
#:key source inputs native-inputs outputs system target #:key source inputs native-inputs outputs system target

View file

@ -19,13 +19,16 @@
(define-module (guix build cargo-build-system) (define-module (guix build cargo-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
#:use-module (ice-9 format) #:use-module (ice-9 format)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:export (%standard-phases #:export (%standard-phases
cargo-build)) cargo-build
generate-checksums))
;; Commentary: ;; Commentary:
;; ;;
@ -45,27 +48,57 @@
"Replace Cargo.toml [dependencies] section with guix inputs." "Replace Cargo.toml [dependencies] section with guix inputs."
;; Make sure Cargo.toml is writeable when the crate uses git-fetch. ;; Make sure Cargo.toml is writeable when the crate uses git-fetch.
(chmod "Cargo.toml" #o644) (chmod "Cargo.toml" #o644)
(let ((port (open-file "Cargo.toml" "a" #:encoding "utf-8"))) (chmod "." #o755)
(format port "~%[replace]~%") (if (not (file-exists? "vendor"))
(for-each (if (not (file-exists? "Cargo.lock"))
(match-lambda (begin
((name . path) (substitute* "Cargo.toml"
(let ((crate (package-name->crate-name name))) ((".*32-sys.*") "
(when (and crate path) ")
(match (string-split (basename path) #\-) ((".*winapi.*") "
((_ ... version) ")
(format port "\"~a:~a\" = { path = \"~a/share/rust-source\" }~%" ((".*core-foundation.*") "
crate version path))))))) "))
inputs) ;; Prepare one new directory with all the required dependencies.
(close-port port)) ;; It's necessary to do this (instead of just using /gnu/store as the
;; directory) because we want to hide the libraries in subdirectories
;; share/rust-source/... instead of polluting the user's profile root.
(mkdir "vendor")
(for-each
(match-lambda
((name . path)
(let ((crate (package-name->crate-name name)))
(when (and crate path)
(match (string-split (basename path) #\-)
((_ ... version)
(symlink (string-append path "/share/rust-source")
(string-append "vendor/" (basename path)))))))))
inputs)
;; Configure cargo to actually use this new directory.
(mkdir-p ".cargo")
(let ((port (open-file ".cargo/config" "w" #:encoding "utf-8")))
(display "
[source.crates-io]
registry = 'https://github.com/rust-lang/crates.io-index'
replace-with = 'vendored-sources'
[source.vendored-sources]
directory = '" port)
(display (getcwd) port)
(display "/vendor" port)
(display "'
" port)
(close-port port)))))
(setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
;(setenv "CARGO_HOME" "/gnu/store")
; (setenv "CMAKE_C_COMPILER" cc)
#t) #t)
(define* (build #:key (cargo-build-flags '("--release" "--frozen")) (define* (build #:key (cargo-build-flags '("--release"))
#:allow-other-keys) #:allow-other-keys)
"Build a given Cargo package." "Build a given Cargo package."
(if (file-exists? "Cargo.lock") (zero? (apply system* `("cargo" "build" ,@cargo-build-flags))))
(zero? (apply system* `("cargo" "build" ,@cargo-build-flags)))
#t))
(define* (check #:key tests? #:allow-other-keys) (define* (check #:key tests? #:allow-other-keys)
"Run tests for a given Cargo package." "Run tests for a given Cargo package."
@ -73,6 +106,44 @@
(zero? (system* "cargo" "test")) (zero? (system* "cargo" "test"))
#t)) #t))
(define (file-sha256 file-name)
"Calculate the hexdigest of the sha256 checksum of FILE-NAME and return it."
(let ((port (open-pipe* OPEN_READ
"sha256sum"
"--"
file-name)))
(let ((result (read-delimited " " port)))
(close-pipe port)
result)))
;; Example dir-name: "/gnu/store/hwlr49riz3la33m6in2n898ly045ylld-rust-rand-0.3.15".
(define (generate-checksums dir-name src-name)
"Given DIR-NAME, checksum all the files in it one by one and put the
result into the file \".cargo-checksum.json\" in the same directory.
Also includes the checksum of an extra file SRC-NAME as if it was
part of the directory DIR-NAME with name \"package\"."
(let* ((file-names (find-files dir-name "."))
(dir-prefix-name (string-append dir-name "/"))
(dir-prefix-name-len (string-length dir-prefix-name))
(checksums-file-name (string-append dir-name "/.cargo-checksum.json")))
(call-with-output-file checksums-file-name
(lambda (port)
(display "{\"files\":{" port)
(let ((sep ""))
(for-each (lambda (file-name)
(let ((file-relative-name (string-drop file-name dir-prefix-name-len)))
(display sep port)
(set! sep ",")
(write file-relative-name port)
(display ":" port)
(write (file-sha256 file-name) port))) file-names))
(display "},\"package\":" port)
(write (file-sha256 src-name) port)
(display "}" port)))))
(define (touch file-name)
(call-with-output-file file-name (const #t)))
(define* (install #:key inputs outputs #:allow-other-keys) (define* (install #:key inputs outputs #:allow-other-keys)
"Install a given Cargo package." "Install a given Cargo package."
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
@ -86,16 +157,19 @@
;; distributing crates as source and replacing ;; distributing crates as source and replacing
;; references in Cargo.toml with store paths. ;; references in Cargo.toml with store paths.
(copy-recursively "src" (string-append rsrc "/src")) (copy-recursively "src" (string-append rsrc "/src"))
(touch (string-append rsrc "/.cargo-ok"))
(generate-checksums rsrc src)
(install-file "Cargo.toml" rsrc) (install-file "Cargo.toml" rsrc)
;; When the package includes executables we install ;; When the package includes executables we install
;; it using cargo install. This fails when the crate ;; it using cargo install. This fails when the crate
;; doesn't contain an executable. ;; doesn't contain an executable.
(if (file-exists? "Cargo.lock") (if (file-exists? "Cargo.lock")
(system* "cargo" "install" "--root" out) (zero? (system* "cargo" "install" "--root" out))
(mkdir out)))) (begin
(mkdir out)
#t))))
(define %standard-phases (define %standard-phases
;; 'configure' phase is not needed.
(modify-phases gnu:%standard-phases (modify-phases gnu:%standard-phases
(replace 'configure configure) (replace 'configure configure)
(replace 'build build) (replace 'build build)

View file

@ -464,6 +464,9 @@ ETIMEDOUT error is raised."
"Like 'open-socket-for-uri', but also handle HTTPS connections. The "Like 'open-socket-for-uri', but also handle HTTPS connections. The
resulting port must be closed with 'close-connection'. When resulting port must be closed with 'close-connection'. When
VERIFY-CERTIFICATE? is true, verify HTTPS server certificates." VERIFY-CERTIFICATE? is true, verify HTTPS server certificates."
;; Note: Guile 2.2.0's (web client) has a same-named export that's actually
;; undefined. See Guile commit 011669af3b428e5626f7bbf66b11d57d9768c047.
(define https? (define https?
(eq? 'https (uri-scheme uri))) (eq? 'https (uri-scheme uri)))
@ -512,12 +515,6 @@ port if PORT is a TLS session record port."
'set-port-encoding! 'set-port-encoding!
(lambda (p e) #f)) (lambda (p e) #f))
;; XXX: Work around <http://bugs.gnu.org/13095>, present in Guile
;; up to 2.0.7.
(module-define! (resolve-module '(web client))
'shutdown (const #f))
;; XXX: Work around <http://bugs.gnu.org/23421>, fixed in Guile commit ;; XXX: Work around <http://bugs.gnu.org/23421>, fixed in Guile commit
;; 16050431f29d56f80c4a8253506fc851b8441840. Guile's date validation ;; 16050431f29d56f80c4a8253506fc851b8441840. Guile's date validation
;; procedure rejects dates in which the hour is not padded with a zero but ;; procedure rejects dates in which the hour is not padded with a zero but
@ -682,12 +679,6 @@ the connection could not be established in less than TIMEOUT seconds. Return
FILE on success. When VERIFY-CERTIFICATE? is true, verify HTTPS FILE on success. When VERIFY-CERTIFICATE? is true, verify HTTPS
certificates; otherwise simply ignore them." certificates; otherwise simply ignore them."
(define post-2.0.7?
(or (> (string->number (major-version)) 2)
(> (string->number (minor-version)) 0)
(> (string->number (micro-version)) 7)
(string>? (version) "2.0.7")))
(define headers (define headers
`(;; Some web sites, such as http://dist.schmorp.de, would block you if `(;; Some web sites, such as http://dist.schmorp.de, would block you if
;; there's no 'User-Agent' header, presumably on the assumption that ;; there's no 'User-Agent' header, presumably on the assumption that
@ -712,20 +703,9 @@ certificates; otherwise simply ignore them."
#:verify-certificate? #:verify-certificate?
verify-certificate?)) verify-certificate?))
((resp bv-or-port) ((resp bv-or-port)
;; XXX: `http-get*' was introduced in 2.0.7, and replaced by (http-get uri #:port connection #:decode-body? #f
;; #:streaming? in 2.0.8. We know we're using it within the #:streaming? #t
;; chroot, but `guix-download' might be using a different #:headers headers))
;; version. So keep this compatibility hack for now.
(if post-2.0.7?
(http-get uri #:port connection #:decode-body? #f
#:streaming? #t
#:headers headers)
(if (module-defined? (resolve-interface '(web client))
'http-get*)
(http-get* uri #:port connection #:decode-body? #f
#:headers headers)
(http-get uri #:port connection #:decode-body? #f
#:extra-headers headers))))
((code) ((code)
(response-code resp)) (response-code resp))
((size) ((size)

View file

@ -31,6 +31,7 @@
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix base16)
#:use-module (guix memoization) #:use-module (guix memoization)
#:use-module (guix combinators) #:use-module (guix combinators)
#:use-module (guix monads) #:use-module (guix monads)

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -18,16 +19,20 @@
(define-module (guix docker) (define-module (guix docker)
#:use-module (guix hash) #:use-module (guix hash)
#:use-module (guix store) #:use-module (guix base16)
#:use-module (guix utils)
#:use-module ((guix build utils) #:use-module ((guix build utils)
#:select (delete-file-recursively #:select (mkdir-p
delete-file-recursively
with-directory-excursion)) with-directory-excursion))
#:use-module (json) #:use-module (guix build store-copy)
#:use-module (srfi srfi-19)
#:use-module (rnrs bytevectors) #:use-module (rnrs bytevectors)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:export (build-docker-image)) #:export (build-docker-image))
;; Load Guile-JSON at run time to simplify the job of 'imported-modules' & co.
(module-use! (current-module) (resolve-interface '(json)))
;; Generate a 256-bit identifier in hexadecimal encoding for the Docker image ;; Generate a 256-bit identifier in hexadecimal encoding for the Docker image
;; containing the closure at PATH. ;; containing the closure at PATH.
(define docker-id (define docker-id
@ -80,48 +85,99 @@
(rootfs . ((type . "layers") (rootfs . ((type . "layers")
(diff_ids . (,(layer-diff-id layer))))))) (diff_ids . (,(layer-diff-id layer)))))))
(define* (build-docker-image path #:key system) (define %tar-determinism-options
"Generate a Docker image archive from the given store PATH. The image ;; GNU tar options to produce archives deterministically.
contains the closure of the given store item." '("--sort=name" "--mtime=@1"
(let ((id (docker-id path)) "--owner=root:0" "--group=root:0"))
(time (strftime "%FT%TZ" (localtime (current-time))))
(name (string-append (getcwd)
"/docker-image-" (basename path) ".tar"))
(arch (match system
("x86_64-linux" "amd64")
("i686-linux" "386")
("armhf-linux" "arm")
("mips64el-linux" "mips64le"))))
(and (call-with-temporary-directory
(lambda (directory)
(with-directory-excursion directory
;; Add symlink from /bin to /gnu/store/.../bin
(symlink (string-append path "/bin") "bin")
(mkdir id) (define symlink-source
(with-directory-excursion id (match-lambda
(with-output-to-file "VERSION" ((source '-> target)
(lambda () (display schema-version))) (string-trim source #\/))))
(with-output-to-file "json"
(lambda () (scm->json (image-description id time))))
;; Wrap it up (define (topmost-component file)
(let ((items (with-store store "Return the topmost component of FILE. For instance, if FILE is \"/a/b/c\",
(requisites store (list path))))) return \"a\"."
(and (zero? (apply system* "tar" "-cf" "layer.tar" (match (string-tokenize file (char-set-complement (char-set #\/)))
(cons "../bin" items))) ((first rest ...)
(delete-file "../bin")))) first)))
(with-output-to-file "config.json" (define* (build-docker-image image path
(lambda () #:key closure compressor
(scm->json (config (string-append id "/layer.tar") (symlinks '())
time arch)))) (system (utsname:machine (uname)))
(with-output-to-file "manifest.json" (creation-time (current-time time-utc)))
(lambda () "Write to IMAGE a Docker image archive from the given store PATH. The image
(scm->json (manifest path id)))) contains the closure of PATH, as specified in CLOSURE (a file produced by
(with-output-to-file "repositories" #:references-graphs). SYMLINKS must be a list of (SOURCE -> TARGET) tuples
(lambda () describing symlinks to be created in the image, where each TARGET is relative
(scm->json (repositories path id))))) to PATH. SYSTEM is a GNU triplet (or prefix thereof) of the system the
(and (zero? (system* "tar" "-C" directory "-cf" name ".")) binaries at PATH are for; it is used to produce metadata in the image.
(begin (delete-file-recursively directory) #t))))
name))) Use COMPRESSOR, a command such as '(\"gzip\" \"-9n\"), to compress IMAGE. Use
CREATION-TIME, a SRFI-19 time-utc object, as the creation time in metadata."
(let ((directory "/tmp/docker-image") ;temporary working directory
(closure (canonicalize-path closure))
(id (docker-id path))
(time (date->string (time-utc->date creation-time) "~4"))
(arch (let-syntax ((cond* (syntax-rules ()
((_ (pattern clause) ...)
(cond ((string-prefix? pattern system)
clause)
...
(else
(error "unsupported system"
system)))))))
(cond* ("x86_64" "amd64")
("i686" "386")
("arm" "arm")
("mips64" "mips64le")))))
;; Make sure we start with a fresh, empty working directory.
(mkdir directory)
(and (with-directory-excursion directory
(mkdir id)
(with-directory-excursion id
(with-output-to-file "VERSION"
(lambda () (display schema-version)))
(with-output-to-file "json"
(lambda () (scm->json (image-description id time))))
;; Wrap it up.
(let ((items (call-with-input-file closure
read-reference-graph)))
;; Create SYMLINKS.
(for-each (match-lambda
((source '-> target)
(let ((source (string-trim source #\/)))
(mkdir-p (dirname source))
(symlink (string-append path "/" target)
source))))
symlinks)
(and (zero? (apply system* "tar" "-cf" "layer.tar"
(append %tar-determinism-options
items
(map symlink-source symlinks))))
(for-each delete-file-recursively
(map (compose topmost-component symlink-source)
symlinks)))))
(with-output-to-file "config.json"
(lambda ()
(scm->json (config (string-append id "/layer.tar")
time arch))))
(with-output-to-file "manifest.json"
(lambda ()
(scm->json (manifest path id))))
(with-output-to-file "repositories"
(lambda ()
(scm->json (repositories path id)))))
(and (zero? (apply system* "tar" "-C" directory "-cf" image
`(,@%tar-determinism-options
,@(if compressor
(list "-I" (string-join compressor))
'())
".")))
(begin (delete-file-recursively directory) #t)))))

View file

@ -912,13 +912,17 @@ environment."
(system (%current-system)) (system (%current-system))
(guile (%guile-for-build))) (guile (%guile-for-build)))
"Return a derivation that imports FILES into STORE. FILES must be a list "Return a derivation that imports FILES into STORE. FILES must be a list
of (FINAL-PATH . FILE-NAME) pairs; each FILE-NAME is read from the file of (FINAL-PATH . FILE) pairs. Each FILE is mapped to FINAL-PATH in the
system, imported, and appears under FINAL-PATH in the resulting store path." resulting store path. FILE can be either a file name, or a file-like object,
as returned by 'local-file' for example."
(define file-pair (define file-pair
(match-lambda (match-lambda
((final-path . file-name) ((final-path . (? string? file-name))
(mlet %store-monad ((file (interned-file file-name (mlet %store-monad ((file (interned-file file-name
(basename final-path)))) (basename final-path))))
(return (list final-path file))))
((final-path . file-like)
(mlet %store-monad ((file (lower-object file-like system)))
(return (list final-path file)))))) (return (list final-path file))))))
(mlet %store-monad ((files (sequence %store-monad (mlet %store-monad ((files (sequence %store-monad
@ -950,14 +954,28 @@ system, imported, and appears under FINAL-PATH in the resulting store path."
(guile (%guile-for-build)) (guile (%guile-for-build))
(module-path %load-path)) (module-path %load-path))
"Return a derivation that contains the source files of MODULES, a list of "Return a derivation that contains the source files of MODULES, a list of
module names such as `(ice-9 q)'. All of MODULES must be in the MODULE-PATH module names such as `(ice-9 q)'. All of MODULES must be either names of
search path." modules to be found in the MODULE-PATH search path, or a module name followed
;; TODO: Determine the closure of MODULES, build the `.go' files, by an arrow followed by a file-like object. For example:
;; canonicalize the source files through read/write, etc.
(let ((files (map (lambda (m) (imported-modules `((guix build utils)
(let ((f (module->source-file-name m))) (guix gcrypt)
(cons f (search-path* module-path f)))) ((guix config) => ,(scheme-file ))))
modules)))
In this example, the first two modules are taken from MODULE-PATH, and the
last one is created from the given <scheme-file> object."
(mlet %store-monad ((files
(mapm %store-monad
(match-lambda
(((module ...) '=> file)
(return
(cons (module->source-file-name module)
file)))
((module ...)
(let ((f (module->source-file-name module)))
(return
(cons f (search-path* module-path f))))))
modules)))
(imported-files files #:name name #:system system (imported-files files #:name name #:system system
#:guile guile))) #:guile guile)))

View file

@ -38,7 +38,9 @@
#:select (mkdir-p dump-port)) #:select (mkdir-p dump-port))
#:use-module ((guix build download) #:use-module ((guix build download)
#:select (open-socket-for-uri #:select (open-socket-for-uri
open-connection-for-uri resolve-uri-reference)) (open-connection-for-uri
. guix:open-connection-for-uri)
resolve-uri-reference))
#:re-export (open-socket-for-uri) #:re-export (open-socket-for-uri)
#:export (&http-get-error #:export (&http-get-error
http-get-error? http-get-error?
@ -217,10 +219,6 @@ or if EOF is reached."
(when (module-variable %web-http 'read-line*) (when (module-variable %web-http 'read-line*)
(module-set! %web-http 'read-line* read-header-line)))) (module-set! %web-http 'read-line* read-header-line))))
;; XXX: Work around <http://bugs.gnu.org/13095>, present in Guile
;; up to 2.0.7.
(module-define! (resolve-module '(web client))
'shutdown (const #f))
(define* (http-fetch uri #:key port (text? #f) (buffered? #t) (define* (http-fetch uri #:key port (text? #f) (buffered? #t)
keep-alive? (verify-certificate? #t) keep-alive? (verify-certificate? #t)
@ -238,9 +236,9 @@ Raise an '&http-get-error' condition if downloading fails."
(let loop ((uri (if (string? uri) (let loop ((uri (if (string? uri)
(string->uri uri) (string->uri uri)
uri))) uri)))
(let ((port (or port (open-connection-for-uri uri (let ((port (or port (guix:open-connection-for-uri uri
#:verify-certificate? #:verify-certificate?
verify-certificate?))) verify-certificate?)))
(headers (match (uri-userinfo uri) (headers (match (uri-userinfo uri)
((? string? str) ((? string? str)
(cons (cons 'Authorization (cons (cons 'Authorization
@ -252,14 +250,9 @@ Raise an '&http-get-error' condition if downloading fails."
(unless (or buffered? (not (file-port? port))) (unless (or buffered? (not (file-port? port)))
(setvbuf port _IONBF)) (setvbuf port _IONBF))
(let*-values (((resp data) (let*-values (((resp data)
;; Try hard to use the API du jour to get an input port. (http-get uri #:streaming? #t #:port port
(if (guile-version>? "2.0.7") #:keep-alive? #t
(http-get uri #:streaming? #t #:port port #:headers headers))
#:keep-alive? #t
#:headers headers) ; 2.0.9+
(http-get* uri #:decode-body? text? ; 2.0.7
#:keep-alive? #t
#:port port #:headers headers)))
((code) ((code)
(response-code resp))) (response-code resp)))
(case code (case code

View file

@ -164,32 +164,16 @@ empty list when the FIELD cannot be found."
(map string-trim-both items)))))) (map string-trim-both items))))))
(define default-r-packages (define default-r-packages
(list "KernSmooth" (list "base"
"MASS"
"Matrix"
"base"
"boot"
"class"
"cluster"
"codetools"
"compiler" "compiler"
"datasets"
"foreign"
"grDevices" "grDevices"
"graphics" "graphics"
"grid" "grid"
"lattice"
"methods" "methods"
"mgcv"
"nlme"
"nnet"
"parallel" "parallel"
"rpart"
"spatial"
"splines" "splines"
"stats" "stats"
"stats4" "stats4"
"survival"
"tcltk" "tcltk"
"tools" "tools"
"translations" "translations"

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -39,6 +39,7 @@
#:use-module ((guix build utils) #:select (package-name->name+version)) #:use-module ((guix build utils) #:select (package-name->name+version))
#:use-module (guix import utils) #:use-module (guix import utils)
#:use-module (guix base16)
#:use-module (guix base32) #:use-module (guix base32)
#:use-module (guix config) #:use-module (guix config)
#:use-module (guix gnu-maintenance) #:use-module (guix gnu-maintenance)

View file

@ -31,9 +31,6 @@
(define-syntax-rule (return/1 value) (define-syntax-rule (return/1 value)
value) value)
(define %nothing ;nothingness
(list 'this 'is 'nothing))
(define-syntax define-cache-procedure (define-syntax define-cache-procedure
(syntax-rules () (syntax-rules ()
"Define a procedure NAME that implements a cache using HASH-REF and "Define a procedure NAME that implements a cache using HASH-REF and
@ -41,15 +38,17 @@ HASH-SET!. Use CALL to invoke the thunk and RETURN to return its value; CALL
and RETURN are used to distinguish between multiple-value and single-value and RETURN are used to distinguish between multiple-value and single-value
returns." returns."
((_ name hash-ref hash-set! call return) ((_ name hash-ref hash-set! call return)
(define (name cache key thunk) (define name
"Cache the result of THUNK under KEY in CACHE, or return the (let ((%nothing '(this is nothing)))
(lambda (cache key thunk)
"Cache the result of THUNK under KEY in CACHE, or return the
already-cached result." already-cached result."
(let ((results (hash-ref cache key %nothing))) (let ((results (hash-ref cache key %nothing)))
(if (eq? results %nothing) (if (eq? results %nothing)
(let ((results (call thunk))) (let ((results (call thunk)))
(hash-set! cache key results) (hash-set! cache key results)
(return results)) (return results))
(return results))))) (return results)))))))
((_ name hash-ref hash-set!) ((_ name hash-ref hash-set!)
(define-cache-procedure name hash-ref hash-set! (define-cache-procedure name hash-ref hash-set!
call/mv return/mv)))) call/mv return/mv))))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -17,9 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix pk-crypto) (define-module (guix pk-crypto)
#:use-module ((guix utils) #:use-module (guix base16)
#:select (bytevector->base16-string
base16-string->bytevector))
#:use-module (guix gcrypt) #:use-module (guix gcrypt)
#:use-module (system foreign) #:use-module (system foreign)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
@ -933,13 +933,16 @@ files for the truetype fonts of the @var{manifest} entries."
#:key #:key
(hooks %default-profile-hooks) (hooks %default-profile-hooks)
(locales? #t) (locales? #t)
system) system target)
"Return a derivation that builds a profile (aka. 'user environment') with "Return a derivation that builds a profile (aka. 'user environment') with
the given MANIFEST. The profile includes additional derivations returned by the given MANIFEST. The profile includes additional derivations returned by
the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc. the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc.
When LOCALES? is true, the build is performed under a UTF-8 locale; this adds When LOCALES? is true, the build is performed under a UTF-8 locale; this adds
a dependency on the 'glibc-utf8-locales' package." a dependency on the 'glibc-utf8-locales' package.
When TARGET is true, it must be a GNU triplet, and the packages in MANIFEST
are cross-built for TARGET."
(mlet %store-monad ((system (if system (mlet %store-monad ((system (if system
(return system) (return system)
(current-system))) (current-system)))
@ -1000,6 +1003,7 @@ a dependency on the 'glibc-utf8-locales' package."
(gexp->derivation "profile" builder (gexp->derivation "profile" builder
#:system system #:system system
#:target target
;; Not worth offloading. ;; Not worth offloading.
#:local-build? #t #:local-build? #t

View file

@ -1,6 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -45,11 +44,6 @@
#:export (guix-archive #:export (guix-archive
options->derivations+files)) options->derivations+files))
;; XXX: Use this hack instead of #:autoload to avoid compilation errors.
;; See <http://bugs.gnu.org/12202>.
(module-autoload! (current-module)
'(guix docker) '(build-docker-image))
;;; ;;;
;;; Command-line options. ;;; Command-line options.
@ -57,8 +51,7 @@
(define %default-options (define %default-options
;; Alist of default option values. ;; Alist of default option values.
`((format . "nar") `((system . ,(%current-system))
(system . ,(%current-system))
(substitutes? . #t) (substitutes? . #t)
(graft? . #t) (graft? . #t)
(max-silent-time . 3600) (max-silent-time . 3600)
@ -69,8 +62,6 @@
Export/import one or more packages from/to the store.\n")) Export/import one or more packages from/to the store.\n"))
(display (_ " (display (_ "
--export export the specified files/packages to stdout")) --export export the specified files/packages to stdout"))
(display (_ "
--format=FMT export files/packages in the specified format FMT"))
(display (_ " (display (_ "
-r, --recursive combined with '--export', include dependencies")) -r, --recursive combined with '--export', include dependencies"))
(display (_ " (display (_ "
@ -126,9 +117,6 @@ Export/import one or more packages from/to the store.\n"))
(option '("export") #f #f (option '("export") #f #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'export #t result))) (alist-cons 'export #t result)))
(option '(#\f "format") #t #f
(lambda (opt name arg result . rest)
(alist-cons 'format arg result)))
(option '(#\r "recursive") #f #f (option '(#\r "recursive") #f #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'export-recursive? #t result))) (alist-cons 'export-recursive? #t result)))
@ -258,21 +246,8 @@ resulting archive to the standard output port."
(if (or (assoc-ref opts 'dry-run?) (if (or (assoc-ref opts 'dry-run?)
(build-derivations store drv)) (build-derivations store drv))
(match (assoc-ref opts 'format) (export-paths store files (current-output-port)
("nar" #:recursive? (assoc-ref opts 'export-recursive?))
(export-paths store files (current-output-port)
#:recursive? (assoc-ref opts 'export-recursive?)))
("docker"
(match files
((file)
(let ((system (assoc-ref opts 'system)))
(format #t "~a\n"
(build-docker-image file #:system system))))
(x
;; TODO: Remove this restriction.
(leave (_ "only a single item can be exported to Docker~%")))))
(format
(leave (_ "~a: unknown archive format~%") format)))
(leave (_ "unable to export the given packages~%"))))) (leave (_ "unable to export the given packages~%")))))
(define (generate-key-pair parameters) (define (generate-key-pair parameters)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -18,7 +18,7 @@
(define-module (guix scripts authenticate) (define-module (guix scripts authenticate)
#:use-module (guix config) #:use-module (guix config)
#:use-module (guix utils) #:use-module (guix base16)
#:use-module (guix pk-crypto) #:use-module (guix pk-crypto)
#:use-module (guix pki) #:use-module (guix pki)
#:use-module (guix ui) #:use-module (guix ui)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -21,7 +21,7 @@
#:use-module (guix scripts) #:use-module (guix scripts)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix hash) #:use-module (guix hash)
#:use-module (guix utils) #:use-module (guix base16)
#:use-module (guix base32) #:use-module (guix base32)
#:use-module ((guix download) #:hide (url-fetch)) #:use-module ((guix download) #:hide (url-fetch))
#:use-module ((guix build download) #:use-module ((guix build download)

View file

@ -24,7 +24,7 @@
#:use-module (guix serialization) #:use-module (guix serialization)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (guix scripts) #:use-module (guix scripts)
#:use-module (guix utils) #:use-module (guix base16)
#:use-module (ice-9 binary-ports) #:use-module (ice-9 binary-ports)
#:use-module (rnrs files) #:use-module (rnrs files)
#:use-module (ice-9 match) #:use-module (ice-9 match)

View file

@ -44,7 +44,8 @@
#:use-module (web uri) #:use-module (web uri)
#:use-module ((guix build download) #:use-module ((guix build download)
#:select (maybe-expand-mirrors #:select (maybe-expand-mirrors
open-connection-for-uri (open-connection-for-uri
. guix:open-connection-for-uri)
close-connection)) close-connection))
#:use-module (web request) #:use-module (web request)
#:use-module (web response) #:use-module (web response)
@ -377,7 +378,8 @@ for connections to complete; when TIMEOUT is #f, wait as long as needed."
((or 'http 'https) ((or 'http 'https)
(catch #t (catch #t
(lambda () (lambda ()
(let ((port (open-connection-for-uri uri #:timeout timeout)) (let ((port (guix:open-connection-for-uri
uri #:timeout timeout))
(request (build-request uri #:headers headers))) (request (build-request uri #:headers headers)))
(define response (define response
(dynamic-wind (dynamic-wind

View file

@ -24,6 +24,7 @@
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix grafts) #:use-module (guix grafts)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix modules)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix profiles) #:use-module (guix profiles)
#:use-module (guix derivations) #:use-module (guix derivations)
@ -32,6 +33,8 @@
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:autoload (gnu packages base) (tar) #:autoload (gnu packages base) (tar)
#:autoload (gnu packages package-management) (guix) #:autoload (gnu packages package-management) (guix)
#:autoload (gnu packages gnupg) (libgcrypt)
#:autoload (gnu packages guile) (guile-json)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9) #:use-module (srfi srfi-9)
#:use-module (srfi srfi-37) #:use-module (srfi srfi-37)
@ -43,19 +46,22 @@
;; Type of a compression tool. ;; Type of a compression tool.
(define-record-type <compressor> (define-record-type <compressor>
(compressor name package extension command) (compressor name extension command)
compressor? compressor?
(name compressor-name) ;string (e.g., "gzip") (name compressor-name) ;string (e.g., "gzip")
(package compressor-package) ;package (extension compressor-extension) ;string (e.g., "lz")
(extension compressor-extension) ;string (e.g., "lz") (command compressor-command)) ;gexp (e.g., #~("/gnu/store/…/gzip" "-9n"))
(command compressor-command)) ;list (e.g., '("gzip" "-9n"))
(define %compressors (define %compressors
;; Available compression tools. ;; Available compression tools.
(list (compressor "gzip" gzip "gz" '("gzip" "-9n")) (list (compressor "gzip" "gz"
(compressor "lzip" lzip "lz" '("lzip" "-9")) #~(#+(file-append gzip "/bin/gzip") "-9n"))
(compressor "xz" xz "xz" '("xz" "-e")) (compressor "lzip" "lz"
(compressor "bzip2" bzip2 "bz2" '("bzip2" "-9")))) #~(#+(file-append lzip "/bin/lzip") "-9"))
(compressor "xz" "xz"
#~(#+(file-append xz "/bin/xz") "-e"))
(compressor "bzip2" "bz2"
#~(#+(file-append bzip2 "/bin/bzip2") "-9"))))
(define (lookup-compressor name) (define (lookup-compressor name)
"Return the compressor object called NAME. Error out if it could not be "Return the compressor object called NAME. Error out if it could not be
@ -67,7 +73,8 @@ found."
(leave (_ "~a: compressor not found~%") name))) (leave (_ "~a: compressor not found~%") name)))
(define* (self-contained-tarball name profile (define* (self-contained-tarball name profile
#:key deduplicate? #:key target
deduplicate?
(compressor (first %compressors)) (compressor (first %compressors))
localstatedir? localstatedir?
(symlinks '()) (symlinks '())
@ -118,8 +125,7 @@ added to the pack."
(string-append #$(if localstatedir? (string-append #$(if localstatedir?
(file-append guix "/sbin:") (file-append guix "/sbin:")
"") "")
#$tar "/bin:" #$tar "/bin"))
#$(compressor-package compressor) "/bin"))
;; Note: there is not much to gain here with deduplication and ;; Note: there is not much to gain here with deduplication and
;; there is the overhead of the '.links' directory, so turn it ;; there is the overhead of the '.links' directory, so turn it
@ -139,7 +145,8 @@ added to the pack."
(with-directory-excursion %root (with-directory-excursion %root
(exit (exit
(zero? (apply system* "tar" (zero? (apply system* "tar"
"-I" #$(string-join (compressor-command compressor)) "-I"
(string-join '#+(compressor-command compressor))
"--format=gnu" "--format=gnu"
;; Avoid non-determinism in the archive. Use ;; Avoid non-determinism in the archive. Use
@ -177,6 +184,63 @@ added to the pack."
build build
#:references-graphs `(("profile" ,profile)))) #:references-graphs `(("profile" ,profile))))
(define* (docker-image name profile
#:key target
deduplicate?
(compressor (first %compressors))
localstatedir?
(symlinks '())
(tar tar))
"Return a derivation to construct a Docker image of PROFILE. The
image is a tarball conforming to the Docker Image Specification, compressed
with COMPRESSOR. It can be passed to 'docker load'. If TARGET is true, it
must a be a GNU triplet and it is used to derive the architecture metadata in
the image."
;; FIXME: Honor LOCALSTATEDIR?.
(define not-config?
(match-lambda
(('guix 'config) #f)
(('guix rest ...) #t)
(('gnu rest ...) #t)
(rest #f)))
(define config
;; (guix config) module for consumption by (guix gcrypt).
(scheme-file "gcrypt-config.scm"
#~(begin
(define-module (guix config)
#:export (%libgcrypt))
;; XXX: Work around <http://bugs.gnu.org/15602>.
(eval-when (expand load eval)
(define %libgcrypt
#+(file-append libgcrypt "/lib/libgcrypt"))))))
(define build
(with-imported-modules `(,@(source-module-closure '((guix docker))
#:select? not-config?)
((guix config) => ,config))
#~(begin
;; Guile-JSON is required by (guix docker).
(add-to-load-path
(string-append #$guile-json "/share/guile/site/"
(effective-version)))
(use-modules (guix docker) (srfi srfi-19))
(setenv "PATH" (string-append #$tar "/bin"))
(build-docker-image #$output #$profile
#:system (or #$target (utsname:machine (uname)))
#:closure "profile"
#:symlinks '#$symlinks
#:compressor '#$(compressor-command compressor)
#:creation-time (make-time time-utc 0 1)))))
(gexp->derivation (string-append name ".tar."
(compressor-extension compressor))
build
#:references-graphs `(("profile" ,profile))))
;;; ;;;
@ -185,7 +249,8 @@ added to the pack."
(define %default-options (define %default-options
;; Alist of default option values. ;; Alist of default option values.
`((system . ,(%current-system)) `((format . tarball)
(system . ,(%current-system))
(substitutes? . #t) (substitutes? . #t)
(graft? . #t) (graft? . #t)
(max-silent-time . 3600) (max-silent-time . 3600)
@ -193,6 +258,11 @@ added to the pack."
(symlinks . ()) (symlinks . ())
(compressor . ,(first %compressors)))) (compressor . ,(first %compressors))))
(define %formats
;; Supported pack formats.
`((tarball . ,self-contained-tarball)
(docker . ,docker-image)))
(define %options (define %options
;; Specifications of the command-line options. ;; Specifications of the command-line options.
(cons* (option '(#\h "help") #f #f (cons* (option '(#\h "help") #f #f
@ -206,19 +276,27 @@ added to the pack."
(option '(#\n "dry-run") #f #f (option '(#\n "dry-run") #f #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'dry-run? #t (alist-cons 'graft? #f result)))) (alist-cons 'dry-run? #t (alist-cons 'graft? #f result))))
(option '(#\f "format") #t #f
(lambda (opt name arg result)
(alist-cons 'format (string->symbol arg) result)))
(option '(#\s "system") #t #f (option '(#\s "system") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'system arg (alist-cons 'system arg
(alist-delete 'system result eq?)))) (alist-delete 'system result eq?))))
(option '("target") #t #f
(lambda (opt name arg result)
(alist-cons 'target arg
(alist-delete 'target result eq?))))
(option '(#\C "compression") #t #f (option '(#\C "compression") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'compressor (lookup-compressor arg) (alist-cons 'compressor (lookup-compressor arg)
result))) result)))
(option '(#\S "symlink") #t #f (option '(#\S "symlink") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(match (string-tokenize arg ;; Note: Using 'string-split' allows us to handle empty
(char-set-complement ;; TARGET (as in "/opt/guile=", meaning that /opt/guile is
(char-set #\=))) ;; a symlink to the profile) correctly.
(match (string-split arg (char-set #\=))
((source target) ((source target)
(let ((symlinks (assoc-ref result 'symlinks))) (let ((symlinks (assoc-ref result 'symlinks)))
(alist-cons 'symlinks (alist-cons 'symlinks
@ -242,7 +320,11 @@ Create a bundle of PACKAGE.\n"))
(show-transformation-options-help) (show-transformation-options-help)
(newline) (newline)
(display (_ " (display (_ "
-f, --format=FORMAT build a pack in the given FORMAT"))
(display (_ "
-s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\""))
(display (_ "
--target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\""))
(display (_ " (display (_ "
-C, --compression=TOOL compress using TOOL--e.g., \"lzip\"")) -C, --compression=TOOL compress using TOOL--e.g., \"lzip\""))
(display (_ " (display (_ "
@ -280,20 +362,35 @@ Create a bundle of PACKAGE.\n"))
(specification->package+output spec)) (specification->package+output spec))
list)) list))
specs)) specs))
(compressor (assoc-ref opts 'compressor)) (pack-format (assoc-ref opts 'format))
(symlinks (assoc-ref opts 'symlinks)) (name (string-append (symbol->string pack-format)
"-pack"))
(target (assoc-ref opts 'target))
(compressor (assoc-ref opts 'compressor))
(symlinks (assoc-ref opts 'symlinks))
(build-image (match (assq-ref %formats pack-format)
((? procedure? proc) proc)
(#f
(leave (_ "~a: unknown pack format")
format))))
(localstatedir? (assoc-ref opts 'localstatedir?))) (localstatedir? (assoc-ref opts 'localstatedir?)))
(with-store store (with-store store
;; Set the build options before we do anything else.
(set-build-options-from-command-line store opts)
(run-with-store store (run-with-store store
(mlet* %store-monad ((profile (profile-derivation (mlet* %store-monad ((profile (profile-derivation
(packages->manifest packages))) (packages->manifest packages)
(drv (self-contained-tarball "pack" profile #:target target))
#:compressor (drv (build-image name profile
compressor #:target
#:symlinks target
symlinks #:compressor
#:localstatedir? compressor
localstatedir?))) #:symlinks
symlinks
#:localstatedir?
localstatedir?)))
(mbegin %store-monad (mbegin %store-monad
(show-what-to-build* (list drv) (show-what-to-build* (list drv)
#:use-substitutes? #:use-substitutes?

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -34,7 +34,8 @@
#:use-module ((guix build download) #:use-module ((guix build download)
#:select (current-terminal-columns #:select (current-terminal-columns
progress-proc uri-abbreviation nar-uri-abbreviation progress-proc uri-abbreviation nar-uri-abbreviation
open-connection-for-uri (open-connection-for-uri
. guix:open-connection-for-uri)
close-connection close-connection
store-path-abbreviation byte-count->string)) store-path-abbreviation byte-count->string))
#:use-module (ice-9 rdelim) #:use-module (ice-9 rdelim)
@ -210,8 +211,8 @@ provide."
(close-connection port)))) (close-connection port))))
(begin (begin
(when (or (not port) (port-closed? port)) (when (or (not port) (port-closed? port))
(set! port (open-connection-for-uri uri (set! port (guix:open-connection-for-uri
#:verify-certificate? #f)) uri #:verify-certificate? #f))
(unless (or buffered? (not (file-port? port))) (unless (or buffered? (not (file-port? port)))
(setvbuf port _IONBF))) (setvbuf port _IONBF)))
(http-fetch uri #:text? #f #:port port (http-fetch uri #:text? #f #:port port
@ -247,9 +248,10 @@ failure, return #f and #f."
read-cache-info) read-cache-info)
#f)) #f))
((http https) ((http https)
(let ((port (open-connection-for-uri uri (let ((port (guix:open-connection-for-uri
#:verify-certificate? #f uri
#:timeout %fetch-timeout))) #:verify-certificate? #f
#:timeout %fetch-timeout)))
(guard (c ((http-get-error? c) (guard (c ((http-get-error? c)
(warning (_ "while fetching '~a': ~a (~s)~%") (warning (_ "while fetching '~a': ~a (~s)~%")
(uri->string (http-get-error-uri c)) (uri->string (http-get-error-uri c))
@ -533,9 +535,10 @@ initial connection on which HTTP requests are sent."
(result seed)) (result seed))
;; (format (current-error-port) "connecting (~a requests left)..." ;; (format (current-error-port) "connecting (~a requests left)..."
;; (length requests)) ;; (length requests))
(let ((p (or port (open-connection-for-uri base-uri (let ((p (or port (guix:open-connection-for-uri
#:verify-certificate? base-uri
verify-certificate?)))) #:verify-certificate?
verify-certificate?))))
;; For HTTPS, P is not a file port and does not support 'setvbuf'. ;; For HTTPS, P is not a file port and does not support 'setvbuf'.
(when (file-port? p) (when (file-port? p)
(setvbuf p _IOFBF (expt 2 16))) (setvbuf p _IOFBF (expt 2 16)))

View file

@ -130,8 +130,7 @@
;; <http://bugs.gnu.org/19621>. See <http://bugs.gnu.org/19610> for ;; <http://bugs.gnu.org/19621>. See <http://bugs.gnu.org/19610> for
;; a discussion. ;; a discussion.
(let ((bv (read-byte-string p))) (let ((bv (read-byte-string p)))
;; XXX: Rewrite using (ice-9 iconv) when the minimum requirement is ;; XXX: Rewrite using (ice-9 iconv).
;; upgraded to Guile >= 2.0.9.
(list->string (map integer->char (bytevector->u8-list bv))))) (list->string (map integer->char (bytevector->u8-list bv)))))
(define (read-maybe-utf8-string p) (define (read-maybe-utf8-string p)

View file

@ -22,6 +22,7 @@
#:use-module (guix memoization) #:use-module (guix memoization)
#:use-module (guix serialization) #:use-module (guix serialization)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix base16)
#:autoload (guix base32) (bytevector->base32-string) #:autoload (guix base32) (bytevector->base32-string)
#:autoload (guix build syscalls) (terminal-columns) #:autoload (guix build syscalls) (terminal-columns)
#:use-module (rnrs bytevectors) #:use-module (rnrs bytevectors)

View file

@ -28,15 +28,12 @@
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (srfi srfi-39) #:use-module (srfi srfi-39)
#:use-module (srfi srfi-60)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 binary-ports) #:use-module (ice-9 binary-ports)
#:autoload (rnrs io ports) (make-custom-binary-input-port) #:autoload (rnrs io ports) (make-custom-binary-input-port)
#:use-module ((rnrs bytevectors) #:select (bytevector-u8-set!)) #:use-module ((rnrs bytevectors) #:select (bytevector-u8-set!))
#:use-module (guix memoization) #:use-module (guix memoization)
#:use-module ((guix build utils) #:select (dump-port)) #:use-module ((guix build utils) #:select (dump-port))
#:use-module ((guix build syscalls) #:select (mkdtemp! fdatasync)) #:use-module ((guix build syscalls) #:select (mkdtemp! fdatasync))
#:use-module (ice-9 vlist)
#:use-module (ice-9 format) #:use-module (ice-9 format)
#:autoload (ice-9 popen) (open-pipe*) #:autoload (ice-9 popen) (open-pipe*)
#:autoload (ice-9 rdelim) (read-line) #:autoload (ice-9 rdelim) (read-line)
@ -46,10 +43,7 @@
#:use-module ((ice-9 iconv) #:prefix iconv:) #:use-module ((ice-9 iconv) #:prefix iconv:)
#:use-module (system foreign) #:use-module (system foreign)
#:re-export (memoize) ; for backwards compatibility #:re-export (memoize) ; for backwards compatibility
#:export (bytevector->base16-string #:export (strip-keyword-arguments
base16-string->bytevector
strip-keyword-arguments
default-keyword-arguments default-keyword-arguments
substitute-keyword-arguments substitute-keyword-arguments
ensure-keyword-arguments ensure-keyword-arguments
@ -98,63 +92,6 @@
call-with-compressed-output-port call-with-compressed-output-port
canonical-newline-port)) canonical-newline-port))
;;;
;;; Base 16.
;;;
(define (bytevector->base16-string bv)
"Return the hexadecimal representation of BV's contents."
(define len
(bytevector-length bv))
(let-syntax ((base16-chars (lambda (s)
(syntax-case s ()
(_
(let ((v (list->vector
(unfold (cut > <> 255)
(lambda (n)
(format #f "~2,'0x" n))
1+
0))))
v))))))
(define chars base16-chars)
(let loop ((i len)
(r '()))
(if (zero? i)
(string-concatenate r)
(let ((i (- i 1)))
(loop i
(cons (vector-ref chars (bytevector-u8-ref bv i)) r)))))))
(define base16-string->bytevector
(let ((chars->value (fold (lambda (i r)
(vhash-consv (string-ref (number->string i 16)
0)
i r))
vlist-null
(iota 16))))
(lambda (s)
"Return the bytevector whose hexadecimal representation is string S."
(define bv
(make-bytevector (quotient (string-length s) 2) 0))
(string-fold (lambda (chr i)
(let ((j (quotient i 2))
(v (and=> (vhash-assv chr chars->value) cdr)))
(if v
(if (zero? (logand i 1))
(bytevector-u8-set! bv j
(arithmetic-shift v 4))
(let ((w (bytevector-u8-ref bv j)))
(bytevector-u8-set! bv j (logior v w))))
(error "invalid hexadecimal character" chr)))
(+ i 1))
0
s)
bv)))
;;; ;;;
;;; Filtering & pipes. ;;; Filtering & pipes.

34
tests/base16.scm Normal file
View file

@ -0,0 +1,34 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (test-base16)
#:use-module (guix base16)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-64)
#:use-module (rnrs bytevectors))
(test-begin "base16")
(test-assert "bytevector->base16-string->bytevector"
(every (lambda (bv)
(equal? (base16-string->bytevector
(bytevector->base16-string bv))
bv))
(map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
(test-end "base16")

View file

@ -598,6 +598,23 @@
get-bytevector-all)))) get-bytevector-all))))
files)))))) files))))))
(test-assertm "imported-files with file-like objects"
(mlet* %store-monad ((plain -> (plain-file "foo" "bar!"))
(q-scm -> (search-path %load-path "ice-9/q.scm"))
(files -> `(("a/b/c" . ,q-scm)
("p/q" . ,plain)))
(drv (imported-files files)))
(mbegin %store-monad
(built-derivations (list drv))
(mlet %store-monad ((dir -> (derivation->output-path drv))
(plain* (text-file "foo" "bar!"))
(q-scm* (interned-file q-scm "c")))
(return
(and (string=? (readlink (string-append dir "/a/b/c"))
q-scm*)
(string=? (readlink (string-append dir "/p/q"))
plain*)))))))
(test-equal "gexp-modules & ungexp" (test-equal "gexp-modules & ungexp"
'((bar) (foo)) '((bar) (foo))
((@@ (guix gexp) gexp-modules) ((@@ (guix gexp) gexp-modules)
@ -668,6 +685,28 @@
(equal? '(chdir "/foo") (equal? '(chdir "/foo")
(call-with-input-file b read)))))))) (call-with-input-file b read))))))))
(test-assertm "gexp->derivation & with-imported-module & computed module"
(mlet* %store-monad
((module -> (scheme-file "x" #~(begin
(define-module (foo bar)
#:export (the-answer))
(define the-answer 42))))
(build -> (with-imported-modules `(((foo bar) => ,module)
(guix build utils))
#~(begin
(use-modules (guix build utils)
(foo bar))
mkdir-p
(call-with-output-file #$output
(lambda (port)
(write the-answer port))))))
(drv (gexp->derivation "thing" build))
(out -> (derivation->output-path drv)))
(mbegin %store-monad
(built-derivations (list drv))
(return (= 42 (call-with-input-file out read))))))
(test-assertm "gexp->derivation #:references-graphs" (test-assertm "gexp->derivation #:references-graphs"
(mlet* %store-monad (mlet* %store-monad
((one (text-file "one" (random-text))) ((one (text-file "one" (random-text)))

View file

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU # GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org> # Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -160,7 +160,7 @@ rm -f "$result"
guix build coreutils --target=mips64el-linux-gnu --dry-run --no-substitutes guix build coreutils --target=mips64el-linux-gnu --dry-run --no-substitutes
# Replacements. # Replacements.
drv1=`guix build guix --with-input=guile=guile-next -d` drv1=`guix build guix --with-input=guile@2.0=guile@2.2 -d`
drv2=`guix build guix -d` drv2=`guix build guix -d`
test "$drv1" != "$drv2" test "$drv1" != "$drv2"

View file

@ -18,7 +18,7 @@
(define-module (test-hash) (define-module (test-hash)
#:use-module (guix hash) #:use-module (guix hash)
#:use-module (guix utils) #:use-module (guix base16)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)
#:use-module (srfi srfi-64) #:use-module (srfi srfi-64)

View file

@ -35,6 +35,7 @@
#:use-module (srfi srfi-64) #:use-module (srfi srfi-64)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module ((ice-9 control) #:select (let/ec))
#:use-module (ice-9 match)) #:use-module (ice-9 match))
;; Test the (guix nar) module. ;; Test the (guix nar) module.
@ -148,17 +149,6 @@
(string-append (dirname (search-path %load-path "pre-inst-env")) (string-append (dirname (search-path %load-path "pre-inst-env"))
"/test-nar-" (number->string (getpid)))) "/test-nar-" (number->string (getpid))))
(define-syntax-rule (let/ec k exp...)
;; This one appeared in Guile 2.0.9, so provide a copy here.
(let ((tag (make-prompt-tag)))
(call-with-prompt tag
(lambda ()
(let ((k (lambda args
(apply abort-to-prompt tag args))))
exp...))
(lambda (_ . args)
(apply values args)))))
(test-begin "nar") (test-begin "nar")

View file

@ -42,7 +42,8 @@
(define %gzip-compressor (define %gzip-compressor
;; Compressor that uses the bootstrap 'gzip'. ;; Compressor that uses the bootstrap 'gzip'.
((@ (guix scripts pack) compressor) "gzip" ((@ (guix scripts pack) compressor) "gzip"
%bootstrap-coreutils&co "gz" '("gzip" "-6n"))) "gz"
#~(#+(file-append %bootstrap-coreutils&co "/bin/gzip") "-6n")))
(define %tar-bootstrap %bootstrap-coreutils&co) (define %tar-bootstrap %bootstrap-coreutils&co)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -19,6 +19,7 @@
(define-module (test-pk-crypto) (define-module (test-pk-crypto)
#:use-module (guix pk-crypto) #:use-module (guix pk-crypto)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix base16)
#:use-module (guix hash) #:use-module (guix hash)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -212,6 +212,35 @@
#:locales? #f))) #:locales? #f)))
(return (derivation-inputs drv)))) (return (derivation-inputs drv))))
(test-assertm "profile-derivation, cross-compilation"
(mlet* %store-monad
((manifest -> (packages->manifest (list packages:sed packages:grep)))
(target -> "arm-linux-gnueabihf")
(grep (package->cross-derivation packages:grep target))
(sed (package->cross-derivation packages:sed target))
(locales (package->derivation packages:glibc-utf8-locales))
(drv (profile-derivation manifest
#:hooks '()
#:locales? #t
#:target target)))
(define (find-input name)
(let ((name (string-append name ".drv")))
(any (lambda (input)
(let ((input (derivation-input-path input)))
(and (string-suffix? name input) input)))
(derivation-inputs drv))))
;; The inputs for grep and sed should be cross-build derivations, but that
;; for the glibc-utf8-locales should be a native build.
(return (and (string=? (derivation-system drv) (%current-system))
(string=? (find-input (package-full-name packages:grep))
(derivation-file-name grep))
(string=? (find-input (package-full-name packages:sed))
(derivation-file-name sed))
(string=? (find-input
(package-full-name packages:glibc-utf8-locales))
(derivation-file-name locales))))))
(test-assert "package->manifest-entry defaults to \"out\"" (test-assert "package->manifest-entry defaults to \"out\""
(let ((outputs (package-outputs packages:glibc))) (let ((outputs (package-outputs packages:glibc)))
(equal? (manifest-entry-output (equal? (manifest-entry-output

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; ;;;
@ -36,13 +36,6 @@
(test-begin "utils") (test-begin "utils")
(test-assert "bytevector->base16-string->bytevector"
(every (lambda (bv)
(equal? (base16-string->bytevector
(bytevector->base16-string bv))
bv))
(map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
(test-assert "gnu-triplet->nix-system" (test-assert "gnu-triplet->nix-system"
(let ((samples '(("i586-gnu0.3" "i686-gnu") (let ((samples '(("i586-gnu0.3" "i686-gnu")
("x86_64-unknown-linux-gnu" "x86_64-linux") ("x86_64-unknown-linux-gnu" "x86_64-linux")