Merge branch 'master' into core-updates

This commit is contained in:
Marius Bakke 2018-11-20 01:14:12 +01:00
commit 4f70db97a0
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
58 changed files with 4688 additions and 1428 deletions

View File

@ -12,6 +12,7 @@
# Copyright © 2018 Nils Gillmann <ng0@n0.is> # Copyright © 2018 Nils Gillmann <ng0@n0.is>
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu> # Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -172,6 +173,7 @@ MODULES = \
guix/build/syscalls.scm \ guix/build/syscalls.scm \
guix/build/gremlin.scm \ guix/build/gremlin.scm \
guix/build/debug-link.scm \ guix/build/debug-link.scm \
guix/build/clojure-utils.scm \
guix/build/emacs-utils.scm \ guix/build/emacs-utils.scm \
guix/build/java-utils.scm \ guix/build/java-utils.scm \
guix/build/lisp-utils.scm \ guix/build/lisp-utils.scm \

View File

@ -163,8 +163,8 @@ if test "x$guix_build_daemon" = "xyes"; then
[chmod +x nix/scripts/download]) [chmod +x nix/scripts/download])
AC_CONFIG_FILES([nix/scripts/substitute], AC_CONFIG_FILES([nix/scripts/substitute],
[chmod +x nix/scripts/substitute]) [chmod +x nix/scripts/substitute])
AC_CONFIG_FILES([nix/scripts/guix-authenticate], AC_CONFIG_FILES([nix/scripts/authenticate],
[chmod +x nix/scripts/guix-authenticate]) [chmod +x nix/scripts/authenticate])
AC_CONFIG_FILES([nix/scripts/offload], AC_CONFIG_FILES([nix/scripts/offload],
[chmod +x nix/scripts/offload]) [chmod +x nix/scripts/offload])
fi fi

View File

@ -112,7 +112,8 @@ run @code{make install}. To do that, you first need to have an environment
with all the dependencies available (@pxref{Building from Git}), and then with all the dependencies available (@pxref{Building from Git}), and then
simply prefix each command with simply prefix each command with
@command{./pre-inst-env} (the @file{pre-inst-env} script lives in the @command{./pre-inst-env} (the @file{pre-inst-env} script lives in the
top build tree of Guix), as in@footnote{The @option{-E} flag to top build tree of Guix; it is generated by @command{./configure}),
as in@footnote{The @option{-E} flag to
@command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set @command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set
such that @command{guix-daemon} and the tools it uses can find the Guile such that @command{guix-daemon} and the tools it uses can find the Guile
modules they need.}: modules they need.}:

View File

@ -11,6 +11,7 @@
@c Identifier of the OpenPGP key used to sign tarballs and such. @c Identifier of the OpenPGP key used to sign tarballs and such.
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5 @set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
@set KEY-SERVER pool.sks-keyservers.net
@copying @copying
Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès@* Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès@*
@ -52,6 +53,7 @@ Copyright @copyright{} 2018 Pierre-Antoine Rouby@*
Copyright @copyright{} 2018 Gábor Boskovits@* Copyright @copyright{} 2018 Gábor Boskovits@*
Copyright @copyright{} 2018 Florian Pelz@* Copyright @copyright{} 2018 Florian Pelz@*
Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{} 2018 Laura Lazzati@*
Copyright @copyright{} 2018 Alex Vong@*
Permission is granted to copy, distribute and/or modify this document Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or under the terms of the GNU Free Documentation License, Version 1.3 or
@ -460,7 +462,8 @@ If that command fails because you do not have the required public key,
then run this command to import it: then run this command to import it:
@example @example
$ gpg --keyserver pgp.mit.edu --recv-keys @value{OPENPGP-SIGNING-KEY-ID} $ gpg --keyserver @value{KEY-SERVER} \
--recv-keys @value{OPENPGP-SIGNING-KEY-ID}
@end example @end example
@noindent @noindent
@ -4393,6 +4396,63 @@ The @code{install} phase installs the binaries, and it also installs the
source code and @file{Cargo.toml} file. source code and @file{Cargo.toml} file.
@end defvr @end defvr
@cindex Clojure (programming language)
@cindex simple Clojure build system
@defvr {Scheme Variable} clojure-build-system
This variable is exported by @code{(guix build-system clojure)}. It implements
a simple build procedure for @uref{https://clojure.org/, Clojure} packages
using plain old @code{compile} in Clojure. Cross-compilation is not supported
yet.
It adds @code{clojure}, @code{icedtea} and @code{zip} to the set of inputs.
Different packages can be specified with the @code{#:clojure}, @code{#:jdk} and
@code{#:zip} parameters, respectively.
A list of source directories, test directories and jar names can be specified
with the @code{#:source-dirs}, @code{#:test-dirs} and @code{#:jar-names}
parameters, respectively. Compile directory and main class can be specified
with the @code{#:compile-dir} and @code{#:main-class} parameters, respectively.
Other parameters are documented below.
This build system is an extension of @var{ant-build-system}, but with the
following phases changed:
@table @code
@item build
This phase calls @code{compile} in Clojure to compile source files and runs
@command{jar} to create jars from both source files and compiled files
according to the include list and exclude list specified in
@code{#:aot-include} and @code{#:aot-exclude}, respectively. The exclude list
has priority over the include list. These lists consist of symbols
representing Clojure libraries or the special keyword @code{#:all} representing
all Clojure libraries found under the source directories. The parameter
@code{#:omit-source?} decides if source should be included into the jars.
@item check
This phase runs tests according to the include list and exclude list specified
in @code{#:test-include} and @code{#:test-exclude}, respectively. Their
meanings are analogous to that of @code{#:aot-include} and
@code{#:aot-exclude}, except that the special keyword @code{#:all} now
stands for all Clojure libraries found under the test directories. The
parameter @code{#:tests?} decides if tests should be run.
@item install
This phase installs all jars built previously.
@end table
Apart from the above, this build system also contains an additional phase:
@table @code
@item install-doc
This phase installs all top-level files with base name matching
@var{%doc-regex}. A different regex can be specified with the
@code{#:doc-regex} parameter. All files (recursively) inside the documentation
directories specified in @code{#:doc-dirs} are installed as well.
@end table
@end defvr
@defvr {Scheme Variable} cmake-build-system @defvr {Scheme Variable} cmake-build-system
This variable is exported by @code{(guix build-system cmake)}. It This variable is exported by @code{(guix build-system cmake)}. It
implements the build procedure for packages using the implements the build procedure for packages using the
@ -9045,7 +9105,8 @@ If that command fails because you do not have the required public key,
then run this command to import it: then run this command to import it:
@example @example
$ gpg --keyserver pgp.mit.edu --recv-keys @value{OPENPGP-SIGNING-KEY-ID} $ gpg --keyserver @value{KEY-SERVER} \
--recv-keys @value{OPENPGP-SIGNING-KEY-ID}
@end example @end example
@noindent @noindent
@ -9857,7 +9918,7 @@ The list of Linux kernel modules that need to be available in the
initial RAM disk. @xref{Initial RAM Disk}. initial RAM disk. @xref{Initial RAM Disk}.
@item @code{initrd} (default: @code{base-initrd}) @item @code{initrd} (default: @code{base-initrd})
A monadic procedure that returns an initial RAM disk for the Linux A procedure that returns an initial RAM disk for the Linux
kernel. This field is provided to support low-level customization and kernel. This field is provided to support low-level customization and
should rarely be needed for casual use. @xref{Initial RAM Disk}. should rarely be needed for casual use. @xref{Initial RAM Disk}.
@ -11832,7 +11893,7 @@ Data Type representing the configuration of connman.
The connman package to use. The connman package to use.
@item @code{disable-vpn?} (default: @code{#f}) @item @code{disable-vpn?} (default: @code{#f})
When true, enable connman's vpn plugin. When true, disable connman's vpn plugin.
@end table @end table
@end deftp @end deftp
@ -21914,10 +21975,10 @@ here is how to use it and customize it further.
@cindex initrd @cindex initrd
@cindex initial RAM disk @cindex initial RAM disk
@deffn {Monadic Procedure} raw-initrd @var{file-systems} @ @deffn {Scheme Procedure} raw-initrd @var{file-systems} @
[#:linux-modules '()] [#:mapped-devices '()] @ [#:linux-modules '()] [#:mapped-devices '()] @
[#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f] [#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f]
Return a monadic derivation that builds a raw initrd. @var{file-systems} is Return a derivation that builds a raw initrd. @var{file-systems} is
a list of file systems to be mounted by the initrd, possibly in addition to a list of file systems to be mounted by the initrd, possibly in addition to
the root file system specified on the kernel command line via @code{--root}. the root file system specified on the kernel command line via @code{--root}.
@var{linux-modules} is a list of kernel modules to be loaded at boot time. @var{linux-modules} is a list of kernel modules to be loaded at boot time.
@ -21935,10 +21996,10 @@ When @var{volatile-root?} is true, the root file system is writable but any chan
to it are lost. to it are lost.
@end deffn @end deffn
@deffn {Monadic Procedure} base-initrd @var{file-systems} @ @deffn {Scheme Procedure} base-initrd @var{file-systems} @
[#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@ [#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@
[#:linux-modules '()] [#:linux-modules '()]
Return a monadic derivation that builds a generic initrd, with kernel Return as a file-like object a generic initrd, with kernel
modules taken from @var{linux}. @var{file-systems} is a list of file-systems to be modules taken from @var{linux}. @var{file-systems} is a list of file-systems to be
mounted by the initrd, possibly in addition to the root file system specified mounted by the initrd, possibly in addition to the root file system specified
on the kernel command line via @code{--root}. @var{mapped-devices} is a list of device on the kernel command line via @code{--root}. @var{mapped-devices} is a list of device
@ -21958,9 +22019,9 @@ program. That gives a lot of flexibility. The
@code{expression->initrd} procedure builds such an initrd, given the @code{expression->initrd} procedure builds such an initrd, given the
program to run in that initrd. program to run in that initrd.
@deffn {Monadic Procedure} expression->initrd @var{exp} @ @deffn {Scheme Procedure} expression->initrd @var{exp} @
[#:guile %guile-static-stripped] [#:name "guile-initrd"] [#:guile %guile-static-stripped] [#:name "guile-initrd"]
Return a derivation that builds a Linux initrd (a gzipped cpio archive) Return as a file-like object a Linux initrd (a gzipped cpio archive)
containing @var{guile} and that evaluates @var{exp}, a G-expression, containing @var{guile} and that evaluates @var{exp}, a G-expression,
upon booting. All the derivations referenced by @var{exp} are upon booting. All the derivations referenced by @var{exp} are
automatically copied to the initrd. automatically copied to the initrd.

View File

@ -19,12 +19,8 @@
(define-module (gnu bootloader extlinux) (define-module (gnu bootloader extlinux)
#:use-module (gnu bootloader) #:use-module (gnu bootloader)
#:use-module (gnu system)
#:use-module (gnu build bootloader)
#:use-module (gnu packages bootloaders) #:use-module (gnu packages bootloaders)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix utils) #:use-module (guix utils)
#:export (extlinux-bootloader #:export (extlinux-bootloader
extlinux-bootloader-gpt)) extlinux-bootloader-gpt))
@ -78,7 +74,7 @@ TIMEOUT ~a~%"
(format port "~%")) (format port "~%"))
#~()))))) #~())))))
(gexp->derivation "extlinux.conf" builder)) (computed-file "extlinux.conf" builder))

View File

@ -20,26 +20,18 @@
;;; 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 bootloader grub) (define-module (gnu bootloader grub)
#:use-module (guix store)
#:use-module (guix packages)
#:use-module (guix derivations)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix monads) #:use-module ((guix utils) #:select (%current-system))
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix download)
#:use-module (gnu artwork) #:use-module (gnu artwork)
#:use-module (gnu system)
#:use-module (gnu bootloader) #:use-module (gnu bootloader)
#:use-module (gnu system uuid) #:use-module (gnu system uuid)
#:use-module (gnu system file-systems) #:use-module (gnu system file-systems)
#:autoload (gnu packages bootloaders) (grub) #:autoload (gnu packages bootloaders) (grub)
#:autoload (gnu packages compression) (gzip)
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg) #:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
#:autoload (gnu packages guile) (guile-2.2)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (rnrs bytevectors)
#:export (grub-image #:export (grub-image
grub-image? grub-image?
grub-image-aspect-ratio grub-image-aspect-ratio
@ -121,7 +113,7 @@ otherwise."
(define* (svg->png svg #:key width height) (define* (svg->png svg #:key width height)
"Build a PNG of HEIGHT x WIDTH from SVG." "Build a PNG of HEIGHT x WIDTH from SVG."
(gexp->derivation "grub-image.png" (computed-file "grub-image.png"
(with-imported-modules '((gnu build svg)) (with-imported-modules '((gnu build svg))
(with-extensions (list guile-rsvg guile-cairo) (with-extensions (list guile-rsvg guile-cairo)
#~(begin #~(begin
@ -138,15 +130,13 @@ WIDTH/HEIGHT, or #f if none was found."
(= (grub-image-aspect-ratio image) ratio)) (= (grub-image-aspect-ratio image) ratio))
(grub-theme-images (grub-theme-images
(bootloader-theme config))))) (bootloader-theme config)))))
(if image (and image
(svg->png (grub-image-file image) (svg->png (grub-image-file image)
#:width width #:height height) #:width width #:height height))))
(with-monad %store-monad
(return #f)))))
(define* (eye-candy config store-device store-mount-point (define* (eye-candy config store-device store-mount-point
#:key system port) #:key system port)
"Return in %STORE-MONAD a gexp that writes to PORT (a port-valued gexp) the "Return a gexp that writes to PORT (a port-valued gexp) the
'grub.cfg' part concerned with graphics mode, background images, colors, and 'grub.cfg' part concerned with graphics mode, background images, colors, and
all that. STORE-DEVICE designates the device holding the store, and all that. STORE-DEVICE designates the device holding the store, and
STORE-MOUNT-POINT is its mount point; these are used to determine where the STORE-MOUNT-POINT is its mount point; these are used to determine where the
@ -194,8 +184,10 @@ fi~%" #$font-file)
(strip-mount-point store-mount-point (strip-mount-point store-mount-point
(file-append grub "/share/grub/unicode.pf2"))) (file-append grub "/share/grub/unicode.pf2")))
(mlet* %store-monad ((image (grub-background-image config))) (define image
(return (and image (grub-background-image config))
(and image
#~(format #$port " #~(format #$port "
function setup_gfxterm {~a} function setup_gfxterm {~a}
@ -220,7 +212,7 @@ fi~%"
#$(strip-mount-point store-mount-point image) #$(strip-mount-point store-mount-point image)
#$(theme-colors grub-theme-color-normal) #$(theme-colors grub-theme-color-normal)
#$(theme-colors grub-theme-color-highlight)))))) #$(theme-colors grub-theme-color-highlight))))
;;; ;;;
@ -331,13 +323,13 @@ entries corresponding to old generations of the system."
#$(grub-root-search device kernel) #$(grub-root-search device kernel)
#$kernel (string-join (list #$@arguments)) #$kernel (string-join (list #$@arguments))
#$initrd)))) #$initrd))))
(mlet %store-monad ((sugar (eye-candy config (define sugar
(menu-entry-device (eye-candy config
(first all-entries)) (menu-entry-device (first all-entries))
(menu-entry-device-mount-point (menu-entry-device-mount-point (first all-entries))
(first all-entries))
#:system system #:system system
#:port #~port))) #:port #~port))
(define builder (define builder
#~(call-with-output-file #$output #~(call-with-output-file #$output
(lambda (port) (lambda (port)
@ -360,7 +352,7 @@ submenu \"GNU system, old configurations...\" {~%")
(format port "}~%")) (format port "}~%"))
#~())))) #~()))))
(gexp->derivation "grub.cfg" builder))) (computed-file "grub.cfg" builder))

View File

@ -20,13 +20,8 @@
(define-module (gnu bootloader u-boot) (define-module (gnu bootloader u-boot)
#:use-module (gnu bootloader extlinux) #:use-module (gnu bootloader extlinux)
#:use-module (gnu bootloader) #:use-module (gnu bootloader)
#:use-module (gnu system)
#:use-module (gnu build bootloader)
#:use-module (gnu packages bootloaders) #:use-module (gnu packages bootloaders)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix utils)
#:export (u-boot-bootloader #:export (u-boot-bootloader
u-boot-a20-olinuxino-lime-bootloader u-boot-a20-olinuxino-lime-bootloader
u-boot-a20-olinuxino-lime2-bootloader u-boot-a20-olinuxino-lime2-bootloader

View File

@ -148,11 +148,15 @@ properties. Return #t on success."
`("-G" ,(string-join supplementary-groups ",")) `("-G" ,(string-join supplementary-groups ","))
'()) '())
,@(if comment `("-c" ,comment) '()) ,@(if comment `("-c" ,comment) '())
,@(if (and home create-home?) ,@(if home `("-d" ,home) '())
(if (file-exists? home)
`("-d" ,home) ; avoid warning from 'useradd' ;; Home directories of non-system accounts are created by
`("-d" ,home "--create-home")) ;; 'activate-user-home'.
,@(if (and home create-home? system?
(not (file-exists? home)))
'("--create-home")
'()) '())
,@(if shell `("-s" ,shell) '()) ,@(if shell `("-s" ,shell) '())
,@(if password `("-p" ,password) '()) ,@(if password `("-p" ,password) '())
,@(if system? '("--system") '()) ,@(if system? '("--system") '())
@ -229,10 +233,7 @@ numeric gid or #f."
#:supplementary-groups supplementary-groups #:supplementary-groups supplementary-groups
#:comment comment #:comment comment
#:home home #:home home
#:create-home? create-home?
;; Home directories of non-system accounts are created by
;; 'activate-user-home'.
#:create-home? (and create-home? system?)
#:shell shell #:shell shell
#:password password) #:password password)

View File

@ -19,6 +19,7 @@
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net> # Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com> # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
# Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -60,6 +61,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/android.scm \ %D%/packages/android.scm \
%D%/packages/animation.scm \ %D%/packages/animation.scm \
%D%/packages/anthy.scm \ %D%/packages/anthy.scm \
%D%/packages/antivirus.scm \
%D%/packages/apl.scm \ %D%/packages/apl.scm \
%D%/packages/apr.scm \ %D%/packages/apr.scm \
%D%/packages/aspell.scm \ %D%/packages/aspell.scm \
@ -614,6 +616,8 @@ dist_patch_DATA = \
%D%/packages/patches/ceph-skip-unittest_blockdev.patch \ %D%/packages/patches/ceph-skip-unittest_blockdev.patch \
%D%/packages/patches/ceph-volume-respect-PATH.patch \ %D%/packages/patches/ceph-volume-respect-PATH.patch \
%D%/packages/patches/chmlib-inttypes.patch \ %D%/packages/patches/chmlib-inttypes.patch \
%D%/packages/patches/clamav-config-llvm-libs.patch \
%D%/packages/patches/clamav-system-tomsfastmath.patch \
%D%/packages/patches/clang-3.5-libc-search-path.patch \ %D%/packages/patches/clang-3.5-libc-search-path.patch \
%D%/packages/patches/clang-3.5-libsanitizer-ustat-fix.patch \ %D%/packages/patches/clang-3.5-libsanitizer-ustat-fix.patch \
%D%/packages/patches/clang-3.8-libc-search-path.patch \ %D%/packages/patches/clang-3.8-libc-search-path.patch \
@ -664,6 +668,7 @@ dist_patch_DATA = \
%D%/packages/patches/emacs-highlight-stages-add-gexp.patch \ %D%/packages/patches/emacs-highlight-stages-add-gexp.patch \
%D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \ %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
%D%/packages/patches/emacs-source-date-epoch.patch \ %D%/packages/patches/emacs-source-date-epoch.patch \
%D%/packages/patches/emacs-realgud-fix-configure-ac.patch \
%D%/packages/patches/enlightenment-fix-setuid-path.patch \ %D%/packages/patches/enlightenment-fix-setuid-path.patch \
%D%/packages/patches/erlang-man-path.patch \ %D%/packages/patches/erlang-man-path.patch \
%D%/packages/patches/eudev-rules-directory.patch \ %D%/packages/patches/eudev-rules-directory.patch \
@ -1179,6 +1184,7 @@ dist_patch_DATA = \
%D%/packages/patches/tk-find-library.patch \ %D%/packages/patches/tk-find-library.patch \
%D%/packages/patches/ttf2eot-cstddef.patch \ %D%/packages/patches/ttf2eot-cstddef.patch \
%D%/packages/patches/ttfautohint-source-date-epoch.patch \ %D%/packages/patches/ttfautohint-source-date-epoch.patch \
%D%/packages/patches/tomsfastmath-constness.patch \
%D%/packages/patches/totem-meson-easy-codec.patch \ %D%/packages/patches/totem-meson-easy-codec.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-include-qregexpvalidator.patch \ %D%/packages/patches/twinkle-include-qregexpvalidator.patch \

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, 2017 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2016, 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
@ -179,7 +179,7 @@ PARI is also available as a C library to allow for faster computations.")
(define-public gp2c (define-public gp2c
(package (package
(name "gp2c") (name "gp2c")
(version "0.0.11") (version "0.0.11pl1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -187,7 +187,7 @@ PARI is also available as a C library to allow for faster computations.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1z69xj2dpd8yyi8108rz26c50xpv0k2j8qnk0bzy1c5lw3pd1adm")))) "1c6f6vmncw032kfzrfyr8bynw6yd3faxpy2285r009fmr0zxfs5s"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("perl" ,perl))) (native-inputs `(("perl" ,perl)))
(inputs `(("pari-gp" ,pari-gp))) (inputs `(("pari-gp" ,pari-gp)))
@ -210,6 +210,36 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
(license license:gpl2) (license license:gpl2)
(home-page "https://pari.math.u-bordeaux.fr/"))) (home-page "https://pari.math.u-bordeaux.fr/")))
(define-public cmh
(package
(name "cmh")
(version "1.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://gforge.inria.fr/frs/download.php/33497/cmh-"
version ".tar.gz"))
(sha256
(base32
"1a28xr9bs0igms0ik99x0w8lnb0jyfcmvyi26pbyh9ggcdivd33p"))))
(build-system gnu-build-system)
(inputs
`(("gmp" ,gmp)
("mpfr" ,mpfr)
("mpc" ,mpc)
("mpfrcx" ,mpfrcx)
("fplll" ,fplll)
("pari-gp" ,pari-gp)))
(synopsis "Igusa class polynomial computations")
(description
"The CMH software computes Igusa (genus 2) class polynomials, which
parameterize the CM points in the moduli space of 2-dimensional abelian
varieties, i.e. Jacobians of hyperelliptic curves.
It can also be used to compute theta constants at arbitrary
precision.")
(license license:gpl3+)
(home-page "http://cmh.gforge.inria.fr/")))
(define-public giac-xcas (define-public giac-xcas
(package (package
(name "giac-xcas") (name "giac-xcas")

156
gnu/packages/antivirus.scm Normal file
View File

@ -0,0 +1,156 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages antivirus)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages flex)
#:use-module (gnu packages llvm)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (gnu packages xml))
(define-public clamav
(package
(name "clamav")
(version "0.100.2")
(source (origin
(method url-fetch)
(uri (string-append "https://www.clamav.net/downloads/production/"
"clamav-" version ".tar.gz"))
(sha256
(base32
"1mkd41sxbjkfjinpx5b9kb85q529gj2s3d0klysssqhysh64ybja"))
(modules '((guix build utils)))
(snippet
'(begin
(for-each delete-file-recursively
'("win32" ;unnecessary
"libclamav/c++/llvm" ;use system llvm
"libclamunrar")))) ;non-free license
(patches
(search-patches "clamav-system-tomsfastmath.patch"
"clamav-config-llvm-libs.patch"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
("check" ,check) ;for tests
("flex" ,flex)
("pkg-config" ,pkg-config)
;; The tomsfastmath patch touches configure.ac and Makefile.am
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(inputs
`(("bzip2" ,bzip2)
("libcurl" ,curl)
("libjson" ,json-c)
("libltdl" ,libltdl)
("libmspack" ,libmspack)
("llvm" ,llvm-3.6) ;requires <3.7, for JIT/verifier
("ncurses" ,ncurses)
("openssl" ,libressl)
("pcre" ,pcre "bin") ;for pcre-config
("sasl" ,cyrus-sasl) ;for linking curl with libtool
("tomsfastmath" ,tomsfastmath)
("xml" ,libxml2)
("zlib" ,zlib)))
(arguments
`(#:configure-flags
(let-syntax ((with (syntax-rules ()
((_ name)
(string-append "--with-" name "="
(assoc-ref %build-inputs name))))))
(list "--disable-unrar"
"--enable-llvm"
"--with-system-llvm"
"--with-system-libmspack"
"--without-included-ltdl"
(with "xml")
(with "openssl")
(with "libjson")
(with "pcre")
(with "zlib")
(with "libcurl")
;; For sanity, specifying --enable-* flags turns
;; "support unavailable" warnings into errors.
"--enable-bzip2"
"--enable-check"
"--sysconfdir=/etc/clamav"
;; Default database directory needs to be writeable
"--with-dbdir=/var/db/clamav"))
;; install sample .conf files to %output/etc rather than /etc/clamav
#:make-flags (list (string-append "sysconfdir=" %output "/etc"))
#:phases (modify-phases %standard-phases
(add-after 'unpack 'reconf
(lambda _ (zero? (system* "autoreconf" "-vfi"))))
(add-before 'configure 'patch-llvm-config
(lambda _
(substitute* '("libclamav/c++/detect.cpp"
"libclamav/c++/ClamBCRTChecks.cpp"
"libclamav/c++/bytecode2llvm.cpp")
(("llvm/Config/config.h") "llvm/Config/llvm-config.h"))
;; `llvm-config --libfiles` inappropriately lists lib*.a
;; libraries, rather than the lib*.so's that our llvm
;; contains. They're used only for listing extra build
;; dependencies, so ignore them until that's fixed.
(substitute* "libclamav/c++/Makefile.in"
(("@LLVMCONFIG_LIBFILES@") ""))
#t))
(add-before 'check 'skip-clamd-tests
;; XXX: The check?_clamd tests fail inside the build
;; chroot, but pass outside.
(lambda _
(substitute* "unit_tests/Makefile"
(("check2_clamd.sh.*check4_clamd.sh") ""))
#t)))))
(home-page "https://www.clamav.net")
(synopsis "Antivirus engine")
(description
"Clam AntiVirus is an anti-virus toolkit, designed especially for e-mail
scanning on mail gateways. It provides a number of utilities including a
flexible and scalable multi-threaded daemon, a command line scanner, and
advanced tool for automatic database updates. The core of the package is an
anti-virus engine available in the form of a shared library.")
(license (list license:gpl2+ ;ClamAV itself
license:lgpl2.1 ;libclamav/mspack.[ch]
license:public-domain ;libclamav/7z/*, libclamav/rijndael.[ch], etc...
(package-license bzip2) ;modified bzip2 source in libclamav/nsis
license:bsd-2 ;several files in libclamav
license:bsd-3 ;libclamav/{regex,qsort.c,swf.[ch]
license:ncsa ;libclamav/c++/PointerTracking.cpp
license:zlib ;libclamav/inf*.h
license:x11 ;libclamav/lzw
(license:non-copyleft "libclamav/strlcat.c") ;"OpenBSD" license
license:asl2.0 ;libclamav/yara*
license:expat)))) ;shared/getopt.[ch]

View File

@ -15,6 +15,7 @@
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Brett Gilio <brettg@posteo.net> ;;; Copyright © 2018 Brett Gilio <brettg@posteo.net>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -427,6 +428,46 @@ and editing digital audio. It features digital effects and spectrum analysis
tools.") tools.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public autotalent
(package
(name "autotalent")
(version "0.2")
(source (origin
(method url-fetch)
(uri (string-append "http://tombaran.info/autotalent-"
version ".tar.gz"))
(sha256
(base32
"1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
;; no configure script
(delete 'configure)
(add-before 'install 'prepare-target-directory
(lambda* (#:key outputs #:allow-other-keys)
(mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
#t))
(add-after 'unpack 'override-target-directory
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "Makefile"
(("/usr/lib64/ladspa")
(string-append (assoc-ref outputs "out") "/lib/ladspa")))
#t)))))
(inputs
`(("ladspa" ,ladspa)))
(home-page "http://tombaran.info/autotalent.html")
(synopsis "Pitch-correction LADSPA audio plugin")
(description
"Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
controls are allowable notes, strength of correction, LFO for vibrato and
formant warp.")
;; All code except the FFT routine is licensed under GPLv2+.
;; The FFT routine is under BSD-3.
(license (list license:gpl2+))))
(define-public azr3 (define-public azr3
(package (package
(name "azr3") (name "azr3")
@ -514,6 +555,47 @@ tools (analyzer, mono/stereo tools, crossovers).")
;; The plugins are released under LGPLv2.1+ ;; The plugins are released under LGPLv2.1+
(license (list license:lgpl2.1+ license:gpl2+)))) (license (list license:lgpl2.1+ license:gpl2+))))
(define-public caps-plugins-lv2
(package
(name "caps-plugins-lv2")
(version "0.9.24") ; version that has been ported.
(source
(origin
;; The Github project hasn't tagged a release.
(method git-fetch)
(uri (git-reference
;; Actually https://github.com/moddevices/caps-lv2.git, but it's
;; missing fixes for newer glibc, so using the origin of a pull
;; request regarding this issue:
(url "https://github.com/jujudusud/caps-lv2.git")
(commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb")))
(file-name (git-file-name name version))
(sha256
(base32
"1idfnazin3cca41zw1a8vwgnxjnkrap7bxxjamjqvgpmvydgcam1"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
;; no configure script
(delete 'configure)
(add-after 'unpack 'override-target-directory
(lambda* (#:key outputs #:allow-other-keys)
(substitute* (find-files "plugins" "Makefile")
(("/usr/local")(assoc-ref outputs "out")))
#t)))))
(inputs
`(("lv2" ,lv2)))
;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
(home-page "https://github.com/moddevices/caps-lv2")
(synopsis "LV2 port of the CAPS audio plugin colection")
(description
"LV2 port of CAPS, a collection of audio plugins comprising basic virtual
guitar amplification and a small range of classic effects, signal processors and
generators of mostly elementary and occasionally exotic nature.")
(license license:gpl3+)))
(define-public espeak (define-public espeak
(package (package
(name "espeak") (name "espeak")
@ -1045,7 +1127,7 @@ follower.")
(define-public fluidsynth (define-public fluidsynth
(package (package
(name "fluidsynth") (name "fluidsynth")
(version "2.0.1") (version "2.0.2")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -1054,7 +1136,7 @@ follower.")
(file-name (string-append name "-" version "-checkout")) (file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"1mqyym5qkh8xd1rqj3yhfxbw5dxjcrljb6nkfqzvcarlv4h6rjn7")))) "02vs5sfsyh1dl7wlcvgs4w3x0qcmsl7vi000qgp99ynwh3wjb274"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f ; no check target '(#:tests? #f ; no check target
@ -1193,7 +1275,7 @@ PS, and DAB+.")
`(list (string-append "prefix=" (assoc-ref %outputs "out")) `(list (string-append "prefix=" (assoc-ref %outputs "out"))
"world")))) "world"))))
(native-inputs (native-inputs
`(("llvm" ,llvm-3.8-with-rtti) `(("llvm" ,llvm-3.8)
("which" ,which) ("which" ,which)
("xxd" ,xxd) ("xxd" ,xxd)
("ctags" ,emacs-minimal) ; for ctags ("ctags" ,emacs-minimal) ; for ctags
@ -3522,3 +3604,37 @@ using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
(synopsis "Pro-quality GM soundfont") (synopsis "Pro-quality GM soundfont")
(description "Fluid-3 is Frank Wen's pro-quality GM soundfont.") (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
(license license:expat)))) (license license:expat))))
(define-public libfdk
(let ((commit "2326faaf8f2cdf2c3a9108ccdaf1d7551aec543e")
(revision "0"))
(package
(name "libfdk")
;; The latest upstream revision, with many bug fixes.
(version (git-version "0.1.6" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/mstorsjo/fdk-aac")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0yy6ndd9d61bwl283vl1r5kva2a4acc0f4r9g0sza156f2abr9ws"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(home-page "https://github.com/mstorsjo/fdk-aac")
(synopsis "Fraunhofer FDK AAC library")
(description "FDK is a library for encoding and decoding Advanced Audio
Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
and AAC-ELD (enhanced low delay) for real-time communication. The encoding
library supports sample rates up to 96 kHz and up to eight channels (7.1
surround).")
(license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
"https://www.gnu.org/licenses/license-list.html#fdk")))))

View File

@ -7380,13 +7380,13 @@ ID and species. It is used by functions in the GenomeInfoDb package.")
(define-public r-genomeinfodb (define-public r-genomeinfodb
(package (package
(name "r-genomeinfodb") (name "r-genomeinfodb")
(version "1.18.0") (version "1.18.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "GenomeInfoDb" version)) (uri (bioconductor-uri "GenomeInfoDb" version))
(sha256 (sha256
(base32 (base32
"1xqpgngd8by0yn627v9kz26a03v5a1lhcfwlnx2i0ivplk9bd40s")))) "049pyzr8iszv3g7wdqf3pz7vg7bzd450c20ln6fgw4g5xnkkr10s"))))
(properties (properties
`((upstream-name . "GenomeInfoDb"))) `((upstream-name . "GenomeInfoDb")))
(build-system r-build-system) (build-system r-build-system)
@ -9748,14 +9748,14 @@ structure (pcaRes) to provide a common interface to the PCA results.")
(define-public r-msnbase (define-public r-msnbase
(package (package
(name "r-msnbase") (name "r-msnbase")
(version "2.8.0") (version "2.8.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "MSnbase" version)) (uri (bioconductor-uri "MSnbase" version))
(sha256 (sha256
(base32 (base32
"0nnlydpklmv9kwlk3gkjgabx7l6y4gav3imq98w8wskb1fhm50c0")))) "0y658anh06vnvbkfs7r8q40gqgyqr2r8kj7jlpnp33fy1lvp1nv7"))))
(properties `((upstream-name . "MSnbase"))) (properties `((upstream-name . "MSnbase")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -10223,14 +10223,14 @@ originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2):
(define-public r-ensembldb (define-public r-ensembldb
(package (package
(name "r-ensembldb") (name "r-ensembldb")
(version "2.6.1") (version "2.6.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "ensembldb" version)) (uri (bioconductor-uri "ensembldb" version))
(sha256 (sha256
(base32 (base32
"1js05dcv1dj4g2vj7lzlg0rgjcjlk2irdr9rxqpwxmivm8nbvf36")))) "0hdz1f34v7sas2v4225icwl3wd4sf17ykpd5dkbx1hc7wcy4w3np"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-annotationdbi" ,r-annotationdbi) `(("r-annotationdbi" ,r-annotationdbi)
@ -11166,7 +11166,7 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
(define-public sambamba (define-public sambamba
(package (package
(name "sambamba") (name "sambamba")
(version "0.6.7-10-g223fa20") (version "0.6.8")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -11176,7 +11176,7 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
(file-name (string-append name "-" version "-checkout")) (file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"1zb9hrxglxqh13ava9wwri30cvf85hjnbn8ccnr8l60a3k5avczn")))) "0k0cz3qcv98p6cq09zlbgnjsggxcqbcmzxg5zikgcgbr2nfq4lry"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; there is no test target `(#:tests? #f ; there is no test target
@ -11187,9 +11187,10 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
(add-after 'unpack 'fix-ldc-version (add-after 'unpack 'fix-ldc-version
(lambda _ (lambda _
(substitute* "gen_ldc_version_info.py" (substitute* "gen_ldc_version_info.py"
(("/usr/bin/env.*") (which "python"))) (("/usr/bin/env.*") (which "python3")))
(substitute* "Makefile" (substitute* "Makefile"
(("\\$\\(shell which ldmd2\\)") (which "ldmd2"))) ;; We use ldc2 instead of ldmd2 to compile sambamba.
(("\\$\\(shell which ldmd2\\)") (which "ldc2")))
#t)) #t))
(add-after 'unpack 'place-biod-and-undead (add-after 'unpack 'place-biod-and-undead
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
@ -11201,21 +11202,21 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
(substitute* "Makefile" (substitute* "Makefile"
(("htslib/libhts.a lz4/lib/liblz4.a") (("htslib/libhts.a lz4/lib/liblz4.a")
"-L-lhts -L-llz4") "-L-lhts -L-llz4")
((" htslib-static lz4-static") "")) ((" lz4-static htslib-static") ""))
#t)) #t))
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))) (bin (string-append out "/bin")))
(mkdir-p bin) (mkdir-p bin)
(install-file "build/sambamba" bin) (install-file "bin/sambamba" bin)
#t)))))) #t))))))
(native-inputs (native-inputs
`(("ldc" ,ldc) `(("ldc" ,ldc)
("rdmd" ,rdmd) ("rdmd" ,rdmd)
("python" ,python2-minimal) ("python" ,python-minimal)
("biod" ("biod"
,(let ((commit "c778e4f2d8bacea7499283ce39f5577b232732c6")) ,(let ((commit "4f1a7d2fb7ef3dfe962aa357d672f354ebfbe42e"))
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -11226,20 +11227,20 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
"-checkout")) "-checkout"))
(sha256 (sha256
(base32 (base32
"1z90562hg47i63gx042wb3ak2vqjg5z7hwgn9bp2pdxfg3nxrw37"))))) "1k5pdjv1qvi0a3rwd1sfq6zbj37l86i7bf710m4c0y6737lxj426")))))
("undead" ("undead"
,(let ((commit "92803d25c88657e945511f0976a0c79d8da46e89")) ,(let ((commit "9be93876982b5f14fcca60832563b3cd767dd84d"))
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/dlang/undeaD.git") (url "https://github.com/biod/undeaD.git")
(commit commit))) (commit commit)))
(file-name (string-append "undead-" (file-name (string-append "undead-"
(string-take commit 9) (string-take commit 9)
"-checkout")) "-checkout"))
(sha256 (sha256
(base32 (base32
"0vq6n81vzqvgphjw54lz2isc1j8lcxwjdbrhqz1h5gwrvw9w5138"))))))) "1xfarj0nqlmi5jd1vmcmm7pabzaf9hxyvk6hp0d6jslb5k9r8r3d")))))))
(inputs (inputs
`(("lz4" ,lz4) `(("lz4" ,lz4)
("htslib" ,htslib-for-sambamba))) ("htslib" ,htslib-for-sambamba)))
@ -14376,3 +14377,77 @@ both read length (longer is better) and read identity (higher is better) when
choosing which reads pass the filter.") choosing which reads pass the filter.")
(license (list license:gpl3 ;filtlong (license (list license:gpl3 ;filtlong
license:asl2.0))))) ;histogram.py license:asl2.0))))) ;histogram.py
(define-public nanopolish
;; The recommended way to install is to clone the git repository
;; <https://github.com/jts/nanopolish#installing-a-particular-release>.
;; Also, the differences between release and current version seem to be
;; significant.
(let ((commit "50e8b5cc62f9b46f5445f5c5e8c5ab7263ea6d9d")
(revision "1"))
(package
(name "nanopolish")
(version (git-version "0.10.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jts/nanopolish.git")
(commit commit)
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
(base32 "09j5gz57yr9i34a27vbl72i4g8syv2zzgmsfyjq02yshmnrvkjs6"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
`("HDF5=noinstall" "EIGEN=noinstall" "HTS=noinstall" "CC=gcc")
#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'find-eigen
(lambda* (#:key inputs #:allow-other-keys)
(setenv "CPATH"
(string-append (assoc-ref inputs "eigen")
"/include/eigen3"))
#t))
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(scripts (string-append out "/share/nanopolish/scripts")))
(install-file "nanopolish" bin)
(for-each (lambda (file) (install-file file scripts))
(find-files "scripts" ".*"))
#t)))
(add-after 'install 'wrap-programs
(lambda* (#:key outputs #:allow-other-keys)
(for-each (lambda (file)
(wrap-program file `("PYTHONPATH" ":" prefix (,path))))
(find-files "/share/nanopolish/scripts" "\\.py"))
(for-each (lambda (file)
(wrap-program file `("PERL5LIB" ":" prefix (,path))))
(find-files "/share/nanopolish/scripts" "\\.pl"))
#t)))))
(inputs
`(("eigen" ,eigen)
("hdf5" ,hdf5)
("htslib" ,htslib)
("perl" ,perl)
("python" ,python)
("python-biopython" ,python-biopython)
("python-numpy" ,python-numpy)
("python-pysam" ,python-pysam)
("python-scikit-learn" , python-scikit-learn)
("python-scipy" ,python-scipy)
("zlib" ,zlib)))
(home-page "https://github.com/jts/nanopolish")
(synopsis "Signal-level analysis of Oxford Nanopore sequencing data")
(description
"This package analyses the Oxford Nanopore sequencing data at signal-level.
Nanopolish can calculate an improved consensus sequence for a draft genome
assembly, detect base modifications, call SNPs (Single nucleotide
polymorphisms) and indels with respect to a reference genome and more.")
(license license:expat))))

View File

@ -34,6 +34,7 @@
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages cdrom) #:use-module (gnu packages cdrom)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cross-base) #:use-module (gnu packages cross-base)
#:use-module (gnu packages disk) #:use-module (gnu packages disk)
#:use-module (gnu packages firmware) #:use-module (gnu packages firmware)
@ -361,7 +362,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 "2018.09") (version "2018.11")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -369,12 +370,13 @@ 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
"0s122kyz1svvs2yjzj4j9qravl3ra4vn0fjqgski7rlczqyg56w3")))) "0znkwljfwwn4y7j20pzz4ilqw8znphrfxns0x1lwdzh3xbr96z3k"))))
(native-inputs (native-inputs
`(("bc" ,bc) `(("bc" ,bc)
("bison" ,bison) ("bison" ,bison)
("dtc" ,dtc) ("dtc" ,dtc)
("flex" ,flex) ("flex" ,flex)
("lz4" ,lz4)
("openssl" ,openssl) ("openssl" ,openssl)
("python-2" ,python-2) ("python-2" ,python-2)
("python2-coverage" ,python2-coverage) ("python2-coverage" ,python2-coverage)

View File

@ -1593,14 +1593,14 @@ the Kaplan-Meier and Aalen-Johansen methods.")
(define-public r-dimred (define-public r-dimred
(package (package
(name "r-dimred") (name "r-dimred")
(version "0.1.0") (version "0.2.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "dimRed" version)) (uri (cran-uri "dimRed" version))
(sha256 (sha256
(base32 (base32
"0fasca5fsbrxdwv30hch7vb9snb844l7l8p5fjf239dq45xfy37v")))) "0ssy2qriiy6zdawriqcbl67qiq68ipml3frq7aqlq70r2fqyyw48"))))
(properties `((upstream-name . "dimRed"))) (properties `((upstream-name . "dimRed")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs `(("r-drr" ,r-drr))) (propagated-inputs `(("r-drr" ,r-drr)))
@ -1864,14 +1864,14 @@ provides a one-row summary of model-level statistics.")
(define-public r-recipes (define-public r-recipes
(package (package
(name "r-recipes") (name "r-recipes")
(version "0.1.3") (version "0.1.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "recipes" version)) (uri (cran-uri "recipes" version))
(sha256 (sha256
(base32 (base32
"1vqh3pxs4n1azhnd1lzg91vasya6g323kllhbrw177j7kdxqyimy")))) "0bwijw4427v2k5z3qci2kyr5dyzql8b3lvf88rwy16p741jckjsn"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-broom" ,r-broom) `(("r-broom" ,r-broom)
@ -4450,14 +4450,14 @@ and adds the annotation to the plot.")
(define-public r-ggpubr (define-public r-ggpubr
(package (package
(name "r-ggpubr") (name "r-ggpubr")
(version "0.1.9") (version "0.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "ggpubr" version)) (uri (cran-uri "ggpubr" version))
(sha256 (sha256
(base32 (base32
"0rvfgii2gxarra7d33n6c63ky0mivxxyx35acsrn94xkbd8mbcsj")))) "0rkpcjb1x7lvhj68aam5airbi534jqyiq12x5xk40a25iifhghq6"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-cowplot" ,r-cowplot) `(("r-cowplot" ,r-cowplot)
@ -6725,14 +6725,14 @@ detection, parallelism through BLAS and parallel user templates.")
(define-public r-sjstats (define-public r-sjstats
(package (package
(name "r-sjstats") (name "r-sjstats")
(version "0.17.1") (version "0.17.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "sjstats" version)) (uri (cran-uri "sjstats" version))
(sha256 (sha256
(base32 (base32
"0s9b0xr8gmcm0kh48jkwk8ns0lqknd8kpys4f7czf0xwzmcx2n1z")))) "0c7g35vn7r9rylhp0gj1yfslg7jybwrhpqpp7vdcd90xfccih24r"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-bayesplot" ,r-bayesplot) `(("r-bayesplot" ,r-bayesplot)
@ -6803,14 +6803,14 @@ differentiation.")
(define-public r-ggeffects (define-public r-ggeffects
(package (package
(name "r-ggeffects") (name "r-ggeffects")
(version "0.6.0") (version "0.7.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "ggeffects" version)) (uri (cran-uri "ggeffects" version))
(sha256 (sha256
(base32 (base32
"00l02g7yssqxmcmbrzk2wsj3i9ywd0xsy0rmbfh57q1qi76a1wq1")))) "070c3fxmzajq2fy816s5pfqdyjlnzkabj97z7fcsva4h5rnqi9d6"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-crayon" ,r-crayon) `(("r-crayon" ,r-crayon)
@ -7499,14 +7499,14 @@ netCDF files.")
(define-public r-biocmanager (define-public r-biocmanager
(package (package
(name "r-biocmanager") (name "r-biocmanager")
(version "1.30.3") (version "1.30.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "BiocManager" version)) (uri (cran-uri "BiocManager" version))
(sha256 (sha256
(base32 (base32
"0mfvx1xzsgiag9p42kdyqg8fvajyakrdy3z2smhdlaawzbi0qmax")))) "0kxs76pixk1d2lpvkyrq6nnvv1rqf55ph5f7igkadyyqirf3y2ah"))))
(properties `((upstream-name . "BiocManager"))) (properties `((upstream-name . "BiocManager")))
(build-system r-build-system) (build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/BiocManager/") (home-page "https://cran.r-project.org/web/packages/BiocManager/")

View File

@ -3659,7 +3659,11 @@ after buffer changes.")
version ".tar")) version ".tar"))
(sha256 (sha256
(base32 (base32
"108wgxg7fb4byaiasgvbxv2hq7b00biq9f0mh9hy6vw4160y5w24")))) "108wgxg7fb4byaiasgvbxv2hq7b00biq9f0mh9hy6vw4160y5w24"))
(patches
;; Patch awaiting inclusion upstream (see:
;; https://github.com/realgud/realgud/pull/226).
(search-patches "emacs-realgud-fix-configure-ac.patch"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(arguments (arguments
`(#:tests? #t `(#:tests? #t

View File

@ -397,7 +397,7 @@ support.")
(define-public tiled (define-public tiled
(package (package
(name "tiled") (name "tiled")
(version "1.2.0") (version "1.2.1")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -406,7 +406,7 @@ support.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1rra48hlkcgqxwxi802fb182p1q0723c9hhfvkd5inz9467idd4c")))) "1dl06k2p0r7l20ghxcq5sn7j0jl2l8q4m27vmfs2qfgvldjll2h3"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("qtbase" ,qtbase) `(("qtbase" ,qtbase)

View File

@ -5606,7 +5606,7 @@ quotation from a collection of quotes.")
(lambda* (#:key outputs inputs #:allow-other-keys) (lambda* (#:key outputs inputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(data (assoc-ref inputs "xonotic-data"))) (data (assoc-ref inputs "xonotic-data")))
(copy-recursively (string-append data "/share/xonotic") (symlink (string-append data "/share/xonotic")
(string-append out "/share/xonotic")) (string-append out "/share/xonotic"))
#t))) #t)))
(add-after 'install-binaries 'wrap-binaries (add-after 'install-binaries 'wrap-binaries

View File

@ -259,7 +259,8 @@ also known as DXTn or DXTC) for Mesa.")
("libxvmc" ,libxvmc) ("libxvmc" ,libxvmc)
,@(match (%current-system) ,@(match (%current-system)
((or "x86_64-linux" "i686-linux") ((or "x86_64-linux" "i686-linux")
`(("llvm" ,llvm))) ;; FIXME: Change to 'llvm' in the next rebuild cycle.
`(("llvm" ,llvm-without-rtti)))
(_ (_
`())) `()))
("makedepend" ,makedepend) ("makedepend" ,makedepend)

View File

@ -2286,8 +2286,8 @@ Guile.")
;; There has not been any release yet. ;; There has not been any release yet.
(define-public guile-newt (define-public guile-newt
(let ((commit "4eaa3cf84b9b426cc0ff7bec48b76cca6ca3ec83") (let ((commit "a73889c57b0572347f7641facdb1bcf08922feff")
(revision "1")) (revision "2"))
(package (package
(name "guile-newt") (name "guile-newt")
(version (string-append "0-" revision "." (string-take commit 9))) (version (string-append "0-" revision "." (string-take commit 9)))
@ -2299,7 +2299,7 @@ Guile.")
(file-name (string-append name "-" version "-checkout")) (file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"0ww7jbdsmjlsxm60ym6cb5s5kc4ljz8bn4y2lvcqnap0aihqfk10")))) "0k37vir22r2sq121lyy74grfai4643s7kr55z01k4j0bh27i06c3"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:make-flags '(#:make-flags

View File

@ -900,7 +900,7 @@ language bindings to VIGRA.")
(define-public libwebp (define-public libwebp
(package (package
(name "libwebp") (name "libwebp")
(version "1.0.0") (version "1.0.1")
(source (source
(origin (origin
;; No tarballs are provided for >0.6.1. ;; No tarballs are provided for >0.6.1.
@ -911,7 +911,7 @@ language bindings to VIGRA.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1w8jzdbr1s4238ygyrlxryycss3f2z6d9amxdq8m82nl3l6skar4")))) "09l4pq4k2acglkmwr96arn79rssl54sv7vrdrgsxqlg7v8c882zh"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("freeglut" ,freeglut) `(("freeglut" ,freeglut)

View File

@ -1988,151 +1988,6 @@ new Date();"))
`(("java-junit" ,java-junit) `(("java-junit" ,java-junit)
,@(package-inputs ant/java8))))) ,@(package-inputs ant/java8)))))
(define-public clojure
(let* ((remove-archives '(begin
(for-each delete-file
(find-files "." ".*\\.(jar|zip)"))
#t))
(submodule (lambda (prefix version hash)
(origin
(method url-fetch)
(uri (string-append "https://github.com/clojure/"
prefix version ".tar.gz"))
(sha256 (base32 hash))
(modules '((guix build utils)))
(snippet remove-archives)))))
(package
(name "clojure")
(version "1.9.0")
(source
(origin
(method url-fetch)
(uri
(string-append "https://github.com/clojure/clojure/archive/clojure-"
version ".tar.gz"))
(sha256
(base32 "0xjbzcw45z32vsn9pifp7ndysjzqswp5ig0jkjpivigh2ckkdzha"))
(modules '((guix build utils)))
(snippet remove-archives)))
(build-system ant-build-system)
(arguments
`(#:modules ((guix build ant-build-system)
(guix build utils)
(ice-9 ftw)
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-26))
#:test-target "test"
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-submodule-sources
(lambda* (#:key inputs #:allow-other-keys)
(for-each
(lambda (name)
(mkdir-p name)
(with-directory-excursion name
(invoke "tar"
;; Use xz for repacked tarball.
"--xz"
"--extract"
"--verbose"
"--file" (assoc-ref inputs name)
"--strip-components=1"))
(copy-recursively (string-append name "/src/main/clojure/")
"src/clj/"))
'("core-specs-alpha-src"
"data-generators-src"
"spec-alpha-src"
"test-check-src"
"test-generative-src"
"tools-namespace-src"))
#t))
(add-after 'unpack 'fix-manifest-classpath
(lambda _
(substitute* "build.xml"
(("<attribute name=\"Class-Path\" value=\".\"/>") ""))
#t))
;; The javadoc target is not built by default.
(add-after 'build 'build-doc
(lambda _
(invoke "ant" "javadoc")))
;; Needed since no install target is provided.
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((java-dir (string-append (assoc-ref outputs "out")
"/share/java/")))
;; Install versioned to avoid collisions.
(install-file (string-append "clojure-" ,version ".jar")
java-dir)
#t)))
;; Needed since no install-doc target is provided.
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let ((doc-dir (string-append (assoc-ref outputs "out")
"/share/doc/clojure-"
,version "/")))
(copy-recursively "doc/clojure" doc-dir)
(copy-recursively "target/javadoc/"
(string-append doc-dir "javadoc/"))
(for-each (cut install-file <> doc-dir)
(filter (cut string-match
".*\\.(html|markdown|md|txt)"
<>)
(scandir "./")))
#t))))))
;; The native-inputs below are needed to run the tests.
(native-inputs
`(("core-specs-alpha-src"
,(submodule "core.specs.alpha/archive/core.specs.alpha-"
"0.1.24"
"0v2a0svf1ar2y42ajxwsjr7zmm5j7pp2zwrd2jh3k7xzd1p9x1fv"))
("data-generators-src"
,(submodule "data.generators/archive/data.generators-"
"0.1.2"
"0kki093jp4ckwxzfnw8ylflrfqs8b1i1wi9iapmwcsy328dmgzp1"))
("spec-alpha-src"
,(submodule "spec.alpha/archive/spec.alpha-"
"0.1.143"
"00alf0347licdn773w2jarpllyrbl52qz4d8mw61anjksacxylzz"))
("test-check-src"
,(submodule "test.check/archive/test.check-"
"0.9.0"
"0p0mnyhr442bzkz0s4k5ra3i6l5lc7kp6ajaqkkyh4c2k5yck1md"))
("test-generative-src"
,(submodule "test.generative/archive/test.generative-"
"0.5.2"
"1pjafy1i7yblc7ixmcpfq1lfbyf3jaljvkgrajn70sws9xs7a9f8"))
("tools-namespace-src"
,(submodule "tools.namespace/archive/tools.namespace-"
"0.2.11"
"10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0"))))
(home-page "https://clojure.org/")
(synopsis "Lisp dialect running on the JVM")
(description "Clojure is a dynamic, general-purpose programming language,
combining the approachability and interactive development of a scripting
language with an efficient and robust infrastructure for multithreaded
programming. Clojure is a compiled language, yet remains completely dynamic
every feature supported by Clojure is supported at runtime. Clojure
provides easy access to the Java frameworks, with optional type hints and type
inference, to ensure that calls to Java can avoid reflection.
Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy
and a powerful macro system. Clojure is predominantly a functional programming
language, and features a rich set of immutable, persistent data structures.
When mutable state is needed, Clojure offers a software transactional memory
system and reactive Agent system that ensure clean, correct, multithreaded
designs.")
;; Clojure is licensed under EPL1.0
;; ASM bytecode manipulation library is licensed under BSD-3
;; Guava Murmur3 hash implementation is licensed under APL2.0
;; src/clj/repl.clj is licensed under CPL1.0
;;
;; See readme.html or readme.txt for details.
(license (list license:epl1.0
license:bsd-3
license:asl2.0
license:cpl1.0)))))
(define-public javacc-4 (define-public javacc-4
(package (package
(name "javacc") (name "javacc")

View File

@ -400,8 +400,8 @@ It has been modified to remove all non-free binary blobs.")
;; supports qemu "virt" machine and possibly a large number of ARM boards. ;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; See : https://wiki.debian.org/DebianKernel/ARMMP. ;; See : https://wiki.debian.org/DebianKernel/ARMMP.
(define %linux-libre-version "4.19.1") (define %linux-libre-version "4.19.2")
(define %linux-libre-hash "12mrrgg2ih4jiylpy45q5nsd8afj3nya0klr543s0mcga88v9527") (define %linux-libre-hash "1yh4ll9qh4wmf9r62ksyic57g1iy1b84qbv855l545ilk12znbmj")
(define %linux-libre-4.19-patches (define %linux-libre-4.19-patches
(list %boot-logo-patch (list %boot-logo-patch
@ -423,8 +423,8 @@ It has been modified to remove all non-free binary blobs.")
#:patches %linux-libre-4.19-patches #:patches %linux-libre-4.19-patches
#:configuration-file kernel-config)) #:configuration-file kernel-config))
(define %linux-libre-4.14-version "4.14.80") (define %linux-libre-4.14-version "4.14.81")
(define %linux-libre-4.14-hash "0h4hi5lqizdx5nk0f3immbcv2n7p5jh26m80v4x6bw4wi5b44fra") (define %linux-libre-4.14-hash "0vxs8k7ka8aqnn1fcr88bhr07wa5jg83pq1rcjby9k422mbv254q")
(define-public linux-libre-4.14 (define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version (make-linux-libre %linux-libre-4.14-version
@ -433,8 +433,8 @@ 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.136" (make-linux-libre "4.9.137"
"1kk6px1jcwbgkpfmf9pdklk6kz90h5l8fvdqwmvnk4bz6b2xrrfp" "1d8313r2k0qr4x7nqlnbwn5lzfc7dz6w8sfg47jml1q38c2fyjf2"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
@ -3188,7 +3188,7 @@ is flexible, efficient and uses a modular implementation.")
(define-public fuse-exfat (define-public fuse-exfat
(package (package
(name "fuse-exfat") (name "fuse-exfat")
(version "1.2.8") (version "1.3.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -3196,7 +3196,7 @@ is flexible, efficient and uses a modular implementation.")
version "/" name "-" version ".tar.gz")) version "/" name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1jwnxw0bg9v5ij8xvbg4xpjr50nykq8a1lmc2xkblz204rq7wd8z")))) "1lz00q8g4590mrdqmf13ba1s9zrqq645ymgm5p9y99ad0qv22r87"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

View File

@ -9,6 +9,7 @@
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -34,6 +35,8 @@
#:use-module (guix hg-download) #:use-module (guix hg-download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system ant)
#:use-module (guix build-system clojure)
#:use-module (guix build-system asdf) #:use-module (guix build-system asdf)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:use-module (gnu packages admin) #:use-module (gnu packages admin)
@ -530,8 +533,12 @@ statistical profiler, a code coverage tool, and many other extensions.")
(install-file kernel libdir) (install-file kernel libdir)
(install-file heap libdir) (install-file heap libdir)
(let ((dirs '("lib" "library" "examples" "contrib" (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
"tools" "objc-bridge"))) ,(match (%current-system)
("x86_64-linux"
"x86-headers64")
("i686-linux"
"x86-headers")))))
(for-each copy-recursively (for-each copy-recursively
dirs dirs
(map (cut string-append libdir <>) dirs))) (map (cut string-append libdir <>) dirs)))
@ -559,6 +566,119 @@ interface.")
(license (list license:lgpl2.1 (license (list license:lgpl2.1
license:clarified-artistic)))) ;TRIVIAL-LDAP package license:clarified-artistic)))) ;TRIVIAL-LDAP package
(define-public clojure
(let* ((lib (lambda (prefix version hash)
(origin (method url-fetch)
(uri (string-append "https://github.com/clojure/"
prefix version ".tar.gz"))
(sha256 (base32 hash)))))
;; The libraries below are needed to run the tests.
(libraries
`(("core-specs-alpha-src"
,(lib "core.specs.alpha/archive/core.specs.alpha-"
"0.1.24"
"0v2a0svf1ar2y42ajxwsjr7zmm5j7pp2zwrd2jh3k7xzd1p9x1fv"))
("data-generators-src"
,(lib "data.generators/archive/data.generators-"
"0.1.2"
"0kki093jp4ckwxzfnw8ylflrfqs8b1i1wi9iapmwcsy328dmgzp1"))
("spec-alpha-src"
,(lib "spec.alpha/archive/spec.alpha-"
"0.1.143"
"00alf0347licdn773w2jarpllyrbl52qz4d8mw61anjksacxylzz"))
("test-check-src"
,(lib "test.check/archive/test.check-"
"0.9.0"
"0p0mnyhr442bzkz0s4k5ra3i6l5lc7kp6ajaqkkyh4c2k5yck1md"))
("test-generative-src"
,(lib "test.generative/archive/test.generative-"
"0.5.2"
"1pjafy1i7yblc7ixmcpfq1lfbyf3jaljvkgrajn70sws9xs7a9f8"))
("tools-namespace-src"
,(lib "tools.namespace/archive/tools.namespace-"
"0.2.11"
"10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0"))))
(library-names (match libraries
(((library-name _) ...)
library-name))))
(package
(name "clojure")
(version "1.9.0")
(source
(origin
(method url-fetch)
(uri
(string-append "https://github.com/clojure/clojure/archive/clojure-"
version ".tar.gz"))
(sha256
(base32 "0xjbzcw45z32vsn9pifp7ndysjzqswp5ig0jkjpivigh2ckkdzha"))))
(build-system ant-build-system)
(arguments
`(#:imported-modules ((guix build clojure-utils)
(guix build guile-build-system)
,@%ant-build-system-modules)
#:modules ((guix build ant-build-system)
(guix build clojure-utils)
(guix build java-utils)
(guix build utils)
(srfi srfi-26))
#:test-target "test"
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-library-sources
(lambda* (#:key inputs #:allow-other-keys)
(define (extract-library name)
(mkdir-p name)
(with-directory-excursion name
(invoke "tar"
"--extract"
"--verbose"
"--file" (assoc-ref inputs name)
"--strip-components=1"))
(copy-recursively (string-append name "/src/main/clojure/")
"src/clj/"))
(for-each extract-library ',library-names)
#t))
(add-after 'unpack-library-sources 'fix-manifest-classpath
(lambda _
(substitute* "build.xml"
(("<attribute name=\"Class-Path\" value=\".\"/>") ""))
#t))
(add-after 'build 'build-javadoc ant-build-javadoc)
(replace 'install (install-jars "./"))
(add-after 'install-license-files 'install-doc
(cut install-doc #:doc-dirs '("doc/clojure/") <...>))
(add-after 'install-doc 'install-javadoc
(install-javadoc "target/javadoc/")))))
(native-inputs libraries)
(home-page "https://clojure.org/")
(synopsis "Lisp dialect running on the JVM")
(description "Clojure is a dynamic, general-purpose programming language,
combining the approachability and interactive development of a scripting
language with an efficient and robust infrastructure for multithreaded
programming. Clojure is a compiled language, yet remains completely dynamic
every feature supported by Clojure is supported at runtime. Clojure
provides easy access to the Java frameworks, with optional type hints and type
inference, to ensure that calls to Java can avoid reflection.
Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy
and a powerful macro system. Clojure is predominantly a functional programming
language, and features a rich set of immutable, persistent data structures.
When mutable state is needed, Clojure offers a software transactional memory
system and reactive Agent system that ensure clean, correct, multithreaded
designs.")
;; Clojure is licensed under EPL1.0
;; ASM bytecode manipulation library is licensed under BSD-3
;; Guava Murmur3 hash implementation is licensed under APL2.0
;; src/clj/repl.clj is licensed under CPL1.0
;; See readme.html or readme.txt for details.
(license (list license:epl1.0
license:bsd-3
license:asl2.0
license:cpl1.0)))))
(define-public femtolisp (define-public femtolisp
(let ((commit "68c5b1225572ecf2c52baf62f928063e5a30511b") (let ((commit "68c5b1225572ecf2c52baf62f928063e5a30511b")
(revision "1")) (revision "1"))
@ -1488,6 +1608,158 @@ compressor. It works on data produced by @code{parse-js} to generate a
("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js))) ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js)))
(synopsis "JavaScript compressor"))) (synopsis "JavaScript compressor")))
(define-public clojure-algo-generic
(package
(name "clojure-algo-generic")
(version "0.1.3")
(source
(origin
(method url-fetch)
(uri
(string-append "https://github.com/clojure/algo.generic/archive"
"/algo.generic-" version ".tar.gz"))
(sha256
(base32 "12w9681i545gp1af4576z1qbixwps1j13c16fmcc7zsb0bd1zr7w"))))
(build-system clojure-build-system)
(arguments
'(#:source-dirs '("src/main/clojure/")
#:test-dirs '("src/test/clojure/")
#:doc-dirs '()))
(synopsis "Generic versions of common functions")
(description
"Generic versions of commonly used functions, implemented as multimethods
that can be implemented for any data type.")
(home-page "https://github.com/clojure/algo.generic")
(license license:epl1.0)))
(define-public clojure-algo-monads
(package
(name "clojure-algo-monads")
(version "0.1.6")
(source
(origin
(method url-fetch)
(uri
(string-append "https://github.com/clojure/algo.monads/archive"
"/algo.monads-" version ".tar.gz"))
(sha256
(base32 "14gbvfgmrda990h45yn7zag83vp1kdkz4f4yzmyvkr0sjihlgdmq"))))
(build-system clojure-build-system)
(arguments
'(#:source-dirs '("src/main/clojure/")
#:test-dirs '("src/test/clojure/")
#:doc-dirs '()))
(native-inputs
`(("clojure-tools-macro" ,clojure-tools-macro)))
(synopsis
"Monad Macros and Definitions")
(description
"This library contains the most commonly used monads as well as macros for
defining and using monads and useful monadic functions.")
(home-page "https://github.com/clojure/algo.monads")
(license license:epl1.0)))
(define-public clojure-core-match
(let ((commit "1837ffbd4a150e8f3953b2d9ed5cf4a4ad3720a7")
(revision "1")) ; this is the 1st commit buildable with clojure 1.9
(package
(name "clojure-core-match")
(version (git-version "0.3.0-alpha5" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/clojure/core.match.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"04bdlp5dgkrqzrz0lw3mfwmygj2218qnm1cz3dkb9wy4m0238s4d"))))
(build-system clojure-build-system)
(arguments
'(#:source-dirs '("src/main/clojure")
#:test-dirs '("src/test/clojure")
#:doc-dirs '()))
(synopsis "Optimized pattern matching for Clojure")
(description
"An optimized pattern matching library for Clojure.
It supports Clojure 1.5.1 and later as well as ClojureScript.")
(home-page "https://github.com/clojure/core.match")
(license license:epl1.0))))
(define-public clojure-instaparse
(let ((commit "dcfffad5b065e750f0f5835f017cdd8188b8ca2e")
(version "1.4.9")) ; upstream forget to tag this release
(package
(name "clojure-instaparse")
(version version)
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/Engelberg/instaparse.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"002mrgin4z3dqy88r1lak7smd0m7x8d22vmliw0m6w6mh5pa17lk"))))
(build-system clojure-build-system)
(arguments
'(#:doc-dirs '("docs/")))
(synopsis "No grammar left behind")
(description
"Instaparse aims to be the simplest way to build parsers in Clojure.
@itemize
@item Turns @emph{standard EBNF or ABNF notation} for context-free grammars
into an executable parser that takes a string as an input and produces a parse
tree for that string.
@item @dfn{No Grammar Left Behind}: Works for @emph{any} context-free grammar,
including @emph{left-recursive}, @emph{right-recursive}, and @emph{ambiguous}
grammars.
@item Extends the power of context-free grammars with PEG-like syntax for
lookahead and negative lookahead.
@item Supports both of Clojure's most popular tree formats (hiccup and enlive)
as output targets
@item Detailed reporting of parse errors.
@item Optionally produces lazy sequence of all parses (especially useful for
diagnosing and debugging ambiguous grammars).
@item ``Total parsing'' mode where leftover string is embedded in the parse
tree.
@item Optional combinator library for building grammars programmatically.
@item Performant.
@end itemize")
(home-page "https://github.com/Engelberg/instaparse")
(license license:epl1.0))))
(define-public clojure-tools-macro
(package
(name "clojure-tools-macro")
(version "0.1.5")
(source
(origin
(method url-fetch)
(uri
(string-append "https://github.com/clojure/tools.macro/archive"
"/tools.macro-" version ".tar.gz"))
(sha256
(base32 "0fs64a0g63xx6g7sj6vrsqknhl90s0isf6k053nw8vv5prfzc7v6"))))
(build-system clojure-build-system)
(arguments
'(#:source-dirs '("src/main/clojure/")
#:test-dirs '("src/test/clojure/")
#:doc-dirs '()))
(synopsis "Utilities for macro writers")
(description "Tools for writing macros.")
(home-page "https://github.com/clojure/tools.macro")
(license license:epl1.0)))
(define-public confusion-mdl (define-public confusion-mdl
(let* ((commit "12a055581fc262225272df43287dae48281900f5")) (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
(package (package

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2016, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com> ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
@ -66,6 +66,7 @@
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE" "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
"-DBUILD_SHARED_LIBS:BOOL=TRUE" "-DBUILD_SHARED_LIBS:BOOL=TRUE"
"-DLLVM_ENABLE_FFI:BOOL=TRUE" "-DLLVM_ENABLE_FFI:BOOL=TRUE"
"-DLLVM_REQUIRES_RTTI=1" ; For some third-party utilities
"-DLLVM_INSTALL_UTILS=ON") ; Needed for rustc. "-DLLVM_INSTALL_UTILS=ON") ; Needed for rustc.
;; Don't use '-g' during the build, to save space. ;; Don't use '-g' during the build, to save space.
@ -91,6 +92,26 @@ languages is in development. The compiler infrastructure includes mirror sets
of programming tools as well as libraries with equivalent functionality.") of programming tools as well as libraries with equivalent functionality.")
(license license:ncsa))) (license license:ncsa)))
;; FIXME: This package is here to prevent many rebuilds on x86_64 and i686
;; from commit fc9dbf41311d99d0fd8befc789ea7c0e35911890. Update users of
;; this in the next rebuild cycle.
(define-public llvm-without-rtti
(package
(inherit llvm)
(arguments
`(#:configure-flags '("-DCMAKE_SKIP_BUILD_RPATH=FALSE"
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
"-DBUILD_SHARED_LIBS:BOOL=TRUE"
"-DLLVM_ENABLE_FFI:BOOL=TRUE"
"-DLLVM_INSTALL_UTILS=ON")
#:build-type "Release"
#:phases (modify-phases %standard-phases
(add-before 'build 'shared-lib-workaround
(lambda _
(setenv "LD_LIBRARY_PATH"
(string-append (getcwd) "/lib"))
#t)))))))
(define* (clang-runtime-from-llvm llvm hash (define* (clang-runtime-from-llvm llvm hash
#:optional (patches '())) #:optional (patches '()))
(package (package
@ -281,18 +302,6 @@ code analysis tools.")
(base32 (base32
"1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf")))))) "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))))
;; This is for Faust 2
(define-public llvm-3.8-with-rtti
(package (inherit llvm-3.8)
(name "llvm-with-rtti")
(arguments
(substitute-keyword-arguments (package-arguments llvm)
((#:configure-flags flags)
`(append '("-DCMAKE_SKIP_BUILD_RPATH=FALSE"
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
"-DLLVM_REQUIRES_RTTI=1")
,flags))))))
(define-public clang-runtime-3.8 (define-public clang-runtime-3.8
(clang-runtime-from-llvm (clang-runtime-from-llvm
llvm-3.8 llvm-3.8

View File

@ -8,6 +8,7 @@
;;; Copyright © 2018 Mark Meyer <mark@ofosos.org> ;;; Copyright © 2018 Mark Meyer <mark@ofosos.org>
;;; Copyright © 2018 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2018 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -300,7 +301,9 @@ networks) based on simulation of (stochastic) flow in graphs.")
"1l5jbhwjpsj38x8b9698hfpkv75h8hn3kj0gihjhn8ym2cwwv110")))) "1l5jbhwjpsj38x8b9698hfpkv75h8hn3kj0gihjhn8ym2cwwv110"))))
(build-system ocaml-build-system) (build-system ocaml-build-system)
(arguments (arguments
`(#:phases `(#:ocaml ,ocaml-4.02
#:findlib ,ocaml4.02-findlib
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'patch-paths (add-before 'configure 'patch-paths
(lambda _ (lambda _

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu> ;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu>
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
@ -216,6 +216,18 @@ Linux kernel and C library interfaces employed by user-space programs.")
automatically.") automatically.")
(license gpl3+))) (license gpl3+)))
(define-public help2man/latest
(package
(inherit help2man)
(version "1.47.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/help2man/help2man-"
version ".tar.xz"))
(sha256
(base32
"1p5830h88cx0zn0snwaj0vpph81xicpsirfwlxmcgjrlmn0nm3sj"))))))
(define-public txt2man (define-public txt2man
(package (package
(name "txt2man") (name "txt2man")

View File

@ -28,6 +28,7 @@
;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Eric Brown <brown@fastmail.com> ;;; Copyright © 2018 Eric Brown <brown@fastmail.com>
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -1808,6 +1809,41 @@ scientific applications modeled by partial differential equations.")
,@(delete "--with-mpi=0" ,cf))))) ,@(delete "--with-mpi=0" ,cf)))))
(synopsis "Library to solve PDEs (with complex scalars and MPI support)"))) (synopsis "Library to solve PDEs (with complex scalars and MPI support)")))
(define-public python-petsc4py
(package
(name "python-petsc4py")
(version "3.9.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "petsc4py" version))
(sha256
(base32
"1f8zd1ac9irsgkyqmzq30d9kl10fy1nh6zk312dhs43g449fkkhc"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'pre-build
(lambda _
;; Define path to PETSc installation.
(setenv "PETSC_DIR" (assoc-ref %build-inputs "petsc"))
#t))
(add-before 'check 'mpi-setup
,%openmpi-setup))))
(inputs
`(("petsc" ,petsc-openmpi)
("python-numpy" ,python-numpy)))
(home-page "https://bitbucket.org/petsc/petsc4py/")
(synopsis "Python bindings for PETSc")
(description "PETSc, the Portable, Extensible Toolkit for
Scientific Computation, is a suite of data structures and routines for
the scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. @code{petsc4py} provides Python
bindings to almost all functions of PETSc.")
(license license:bsd-3)))
(define-public python-kiwisolver (define-public python-kiwisolver
(package (package
(name "python-kiwisolver") (name "python-kiwisolver")
@ -1939,6 +1975,43 @@ arising after the discretization of partial differential equations.")
,@(alist-delete "petsc" (package-propagated-inputs slepc-openmpi)))) ,@(alist-delete "petsc" (package-propagated-inputs slepc-openmpi))))
(synopsis "Scalable library for eigenproblems (with complex scalars and MPI support)"))) (synopsis "Scalable library for eigenproblems (with complex scalars and MPI support)")))
(define-public python-slepc4py
(package
(name "python-slepc4py")
(version "3.9.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "slepc4py" version))
(sha256
(base32
"02xr0vndgibgkz3rgprqk05n3mk5mpgqw550sr4681vcsgz4zvb7"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'pre-build
(lambda _
;; Define path to PETSc installation.
(setenv "PETSC_DIR" (assoc-ref %build-inputs "petsc"))
;; Define path to SLEPc installation.
(setenv "SLEPC_DIR" (assoc-ref %build-inputs "slepc"))
#t))
(add-before 'check 'mpi-setup
,%openmpi-setup))))
(inputs
`(("python-numpy" ,python-numpy)
("python-petsc4py" ,python-petsc4py)
("slepc" ,slepc-openmpi)))
(home-page "https://bitbucket.org/slepc/slepc4py/")
(synopsis "Python bindings for SLEPc")
(description "SLEPc, the Scalable Library for Eigenvalue Problem
Computations, is based on PETSc, the Portable, Extensible Toolkit for
Scientific Computation. It employs the MPI standard for all
message-passing communication. @code{slepc4py} provides Python
bindings to almost all functions of SLEPc.")
(license license:bsd-3)))
(define-public mumps (define-public mumps
(package (package
(name "mumps") (name "mumps")
@ -2716,6 +2789,18 @@ to BMP, JPEG or PNG image formats.")
(lambda _ (lambda _
(chmod "src/maxima" #o555) (chmod "src/maxima" #o555)
#t)) #t))
(replace 'check
(lambda _
;; This is derived from the testing code in the "debian/rules" file
;; of Debian's Maxima package.
;; If Maxima can successfully run this, the binary to be installed
;; should be fine.
(zero?
(system
(string-append "./maxima-local "
"--lisp=gcl "
"--batch-string=\"run_testsuite();\" "
"| grep -q \"No unexpected errors found\"")))))
;; Make sure the doc and emacs files are found in the ;; Make sure the doc and emacs files are found in the
;; standard location. Also configure maxima to find gnuplot ;; standard location. Also configure maxima to find gnuplot
;; without having it on the PATH. ;; without having it on the PATH.
@ -3861,15 +3946,15 @@ as equations, scalars, vectors, and matrices.")
(define-public z3 (define-public z3
(package (package
(name "z3") (name "z3")
(version "4.5.0") (version "4.8.1")
(home-page "https://github.com/Z3Prover/z3")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (string-append (uri (git-reference (url home-page)
"https://github.com/Z3Prover/z3/archive/z3-" (commit (string-append "z3-" version))))
version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"032a5lvji2liwmc25jv52bdrhimqflvqbpg77ccaq1jykhiivbmf")))) "1vr57bwx40sd5riijyrhy70i2wnv9xrdihf6y5zdz56yq88rl48f"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags
@ -3898,43 +3983,57 @@ as equations, scalars, vectors, and matrices.")
(synopsis "Theorem prover") (synopsis "Theorem prover")
(description "Z3 is a theorem prover and @dfn{satisfiability modulo (description "Z3 is a theorem prover and @dfn{satisfiability modulo
theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.") theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
(home-page "https://github.com/Z3Prover/z3")
(license license:expat))) (license license:expat)))
(define-public cubicle (define-public cubicle
(package (package
(name "cubicle") (name "cubicle")
(version "1.1.1") (version "1.1.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://cubicle.lri.fr/cubicle-" (uri (string-append "http://cubicle.lri.fr/cubicle-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1sny9c4fm14k014pk62ibpwbrjjirkx8xmhs9jg7q1hk7y7x3q2h")))) "10kk80jdmpdvql88sdjsh7vqzlpaphd8vip2lp47aarxjkwjlz1q"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("ocaml" ,ocaml) `(("automake" ,automake)
("ocaml" ,ocaml)
("which" ,(@@ (gnu packages base) which)))) ("which" ,(@@ (gnu packages base) which))))
(propagated-inputs (propagated-inputs
`(("z3" ,z3))) `(("ocaml-num" ,ocaml-num)
("z3" ,z3)))
(arguments (arguments
`(#:configure-flags (list "--with-z3") `(#:configure-flags (list "--with-z3")
#:make-flags (list "QUIET=")
#:tests? #f #:tests? #f
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'configure-for-release (add-before 'configure 'configure-for-release
(lambda _ (lambda _
(substitute* "Makefile.in" (substitute* "Makefile.in"
(("SVNREV=") "#SVNREV=")))) (("SVNREV=") "#SVNREV="))
#t))
(add-before 'configure 'fix-/bin/sh (add-before 'configure 'fix-/bin/sh
(lambda _ (lambda _
(substitute* "configure" (substitute* "configure"
(("/bin/sh") (which "sh"))))) (("-/bin/sh") (string-append "-" (which "sh"))))
#t))
(add-before 'configure 'fix-smt-z3wrapper.ml (add-before 'configure 'fix-smt-z3wrapper.ml
(lambda _ (lambda _
(substitute* "Makefile.in" (substitute* "Makefile.in"
(("\\\\n") ""))))))) (("\\\\n") ""))
#t))
(add-before 'configure 'fix-ocaml-num
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "Makefile.in"
(("= \\$\\(FUNCTORYLIB\\)")
(string-append "= -I "
(assoc-ref inputs "ocaml-num")
"/lib/ocaml/site-lib"
" $(FUNCTORYLIB)")))
#t)))))
(home-page "http://cubicle.lri.fr/") (home-page "http://cubicle.lri.fr/")
(synopsis "Model checker for array-based systems") (synopsis "Model checker for array-based systems")
(description "Cubicle is a model checker for verifying safety properties (description "Cubicle is a model checker for verifying safety properties

View File

@ -6,6 +6,7 @@
;;; Copyright © 2017 Dave Love <fx@gnu.org> ;;; Copyright © 2017 Dave Love <fx@gnu.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -29,6 +30,7 @@
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
@ -263,3 +265,43 @@ only provides @code{MPI_THREAD_FUNNELED}.")))
;; in the build environment than the package wants while testing. ;; in the build environment than the package wants while testing.
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes") (setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes")
#t)) #t))
(define-public python-mpi4py
(package
(name "python-mpi4py")
(version "3.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "mpi4py" version))
(sha256
(base32
"1mzgd26dfv4vwbci8gq77ss9f0x26i9aqzq9b9vs9ndxhlnv0mxl"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'build 'mpi-setup
,%openmpi-setup)
(add-before 'check 'pre-check
(lambda _
;; Skip BaseTestSpawn class (causes error 'ompi_dpm_dyn_init()
;; failed --> Returned "Unreachable"' in chroot environment).
(substitute* "test/test_spawn.py"
(("unittest.skipMPI\\('openmpi\\(<3.0.0\\)'\\)")
"unittest.skipMPI('openmpi')"))
#t)))))
(inputs
`(("openmpi" ,openmpi)))
(home-page "https://bitbucket.org/mpi4py/mpi4py/")
(synopsis "Python bindings for the Message Passing Interface standard")
(description "MPI for Python (mpi4py) provides bindings of the Message
Passing Interface (MPI) standard for the Python programming language, allowing
any Python program to exploit multiple processors.
mpi4py is constructed on top of the MPI-1/MPI-2 specification and provides an
object oriented interface which closely follows MPI-2 C++ bindings. It
supports point-to-point and collective communications of any picklable Python
object as well as optimized communications of Python objects (such as NumPy
arrays) that expose a buffer interface.")
(license bsd-3)))

View File

@ -26,6 +26,7 @@
(define-module (gnu packages multiprecision) (define-module (gnu packages multiprecision)
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages m4) #:use-module (gnu packages m4)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (guix packages) #:use-module (guix packages)
@ -225,3 +226,68 @@ minor changes to the source code. In most cases only a few type statements
and (for Fortran-90 programs) read/write statements need to be changed. PSLQ and (for Fortran-90 programs) read/write statements need to be changed. PSLQ
and numerical quadrature programs are included.") and numerical quadrature programs are included.")
(license bsd-3))) (license bsd-3)))
(define-public tomsfastmath
(package
(name "tomsfastmath")
(version "0.13.0")
(synopsis "Large integer arithmetic library")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/libtom/tomsfastmath/"
"releases/download/v" version "/"
"tfm-" (version-major+minor version) ".tar.bz2"))
(sha256
(base32
"01rlsvp6lskk2a0gfdi24ak5h8vdwi6kqbvbwjnmb92r0zrfdvwd"))
(patches (search-patches "tomsfastmath-constness.patch"))))
(build-system gnu-build-system)
(native-inputs
`(("libtool" ,libtool)))
(arguments
`(#:make-flags (list "-f" "makefile.shared"
(string-append "LIBPATH=" %output "/lib")
(string-append "INCPATH=" %output "/include")
"GROUP=root" "USER=root"
"CC=gcc")
#:phases
(modify-phases %standard-phases
(delete 'configure) ;no configuration
(replace 'check
(lambda* (#:key make-flags #:allow-other-keys)
(and (zero? (apply system* "make"
"stest" "test_standalone"
make-flags))
(zero? (system* "./stest"))
(zero? (system* "./test")))))
(add-before 'install 'install-nogroup
(lambda _
;; Let permissions inherit from the current process
(substitute* "makefile.shared"
(("-g \\$\\(GROUP\\) -o \\$\\(USER\\)") ""))
#t))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let ((docdir (string-append (assoc-ref outputs "out")
"/share/doc/tomsfastmath")))
(install-file "doc/tfm.pdf" docdir)
#t)))
(add-after 'install 'install-pc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(pc-dir (string-append out "/lib/pkgconfig")))
(call-with-output-file "tomsfastmath.pc"
(lambda (port)
(format port "~
Name: TomsFastMath
Description: ~a
Version: ~a
Libs: -L~a/lib -ltfm~%"
,synopsis ,version out)))
(install-file "tomsfastmath.pc" pc-dir)
#t))))))
(home-page "http://www.libtom.org/TomsFastMath/")
(description "TomsFastMath is a large integer library written in portable
ISO C. It is a port of LibTomMath with optional support for inline assembler
multiplies.")
(license public-domain)))

File diff suppressed because it is too large Load Diff

View File

@ -343,7 +343,8 @@ the Nix package manager.")
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(invoke "make" "install-binPROGRAMS" (invoke "make" "install-binPROGRAMS"
"install-nodist_pkglibexecSCRIPTS") "install-nodist_pkglibexecSCRIPTS"
"install-nodist_libexecSCRIPTS") ;guix-authenticate
;; We need to tell 'guix-daemon' which 'guix' command to use. ;; We need to tell 'guix-daemon' which 'guix' command to use.
;; Here we use a questionable hack where we hard-code root's ;; Here we use a questionable hack where we hard-code root's
@ -568,13 +569,13 @@ transactions from C or Python.")
(define-public diffoscope (define-public diffoscope
(package (package
(name "diffoscope") (name "diffoscope")
(version "104") (version "105")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri name version)) (uri (pypi-uri name version))
(sha256 (sha256
(base32 (base32
"0vnfhnvqvdwgh1sh2lmwad8jk2vjvq76p5xm3pfgxdik2yblmvqd")))) "0bqkwvrvlvybqfi73qv1k5xic2qzw5lv20imqadf1wc4l8vc0vq3"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases

View File

@ -0,0 +1,14 @@
Our llvm does not contain a single top-level library, so consult llvm-config
for the libraries that need to be linked against.
--- clamav-0.100.2/libclamav/c++/configure.ac 2018-09-19 14:29:07.000000000 -0500
+++ clamav-0.100.2/libclamav/c++/configure.ac 2018-10-06 21:45:09.377249158 -0500
@@ -105,7 +105,7 @@
if test "x$llvm_linking" = "xdynamic"; then
AC_SUBST(LLVMCONFIG_LDFLAGS, [`$llvmconfig --ldflags`])
- AC_SUBST(LLVMCONFIG_LIBS, [-lLLVM-$llvmver])
+ AC_SUBST(LLVMCONFIG_LIBS, [`$llvmconfig --libs $llvmcomp`])
AC_SUBST(LLVMCONFIG_LIBFILES, [])
else
if test $llvmver_test -ge 350; then

View File

@ -0,0 +1,102 @@
From 756ff89526b5ffaa7a4f49b1bbecf2ecbd6f85f9 Mon Sep 17 00:00:00 2001
From: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Date: Wed, 11 Mar 2015 20:03:15 +0100
Subject: add support for system tomsfastmath
Patch-Name: add-support-for-system-tomsfastmath.patch
---
configure.ac | 2 ++
libclamav/Makefile.am | 10 ++++++++--
libclamav/bignum.h | 6 +++++-
libclamav/xdp.c | 2 +-
m4/reorganization/libs/tomsfastmath.m4 | 12 ++++++++++++
5 files changed, 28 insertions(+), 4 deletions(-)
create mode 100644 m4/reorganization/libs/tomsfastmath.m4
--- a/configure.ac
+++ b/configure.ac
@@ -82,6 +82,7 @@ m4_include([m4/reorganization/libs/xml.m
m4_include([m4/reorganization/libs/openssl.m4])
m4_include([m4/reorganization/libs/json.m4])
m4_include([m4/reorganization/libs/pcre.m4])
+m4_include([m4/reorganization/libs/tomsfastmath.m4])
AM_MAINTAINER_MODE
m4_include([m4/reorganization/libs/libz.m4])
@@ -285,6 +286,7 @@ else
fi
CL_MSG_STATUS([yara ],[$enable_yara],[$enable_yara])
CL_MSG_STATUS([fts ],[yes],[$lfs_fts_msg])
+CL_MSG_STATUS([tomsfastmath],[yes],[$tomsfastmath_msg])
# Yep, downgrading the compiler avoids the bug too:
--- a/libclamav/Makefile.am
+++ b/libclamav/Makefile.am
@@ -496,8 +496,10 @@ libclamav_la_SOURCES += yara_arena.c \
yara_clam.h
endif
-libclamav_la_SOURCES += bignum.h\
- bignum_fast.h\
+libclamav_la_SOURCES += bignum.h
+
+if !SYSTEM_TOMSFASTMATH
+libclamav_la_SOURCES += bignum_fast.h\
tomsfastmath/addsub/fp_add.c\
tomsfastmath/addsub/fp_add_d.c\
tomsfastmath/addsub/fp_addmod.c\
@@ -579,6 +581,10 @@ libclamav_la_SOURCES += bignum.h\
tomsfastmath/sqr/fp_sqr_comba_generic.c\
tomsfastmath/sqr/fp_sqr_comba_small_set.c\
tomsfastmath/sqr/fp_sqrmod.c
+else
+libclamav_la_CFLAGS += $(TOMSFASTMATH_CFLAGS)
+libclamav_la_LIBADD += $(TOMSFASTMATH_LIBS)
+endif
.PHONY: version.h.tmp
version.c: version.h
--- a/libclamav/bignum.h
+++ b/libclamav/bignum.h
@@ -1,9 +1,13 @@
#ifndef BIGNUM_H_
#define BIGNUM_H_
+#if HAVE_SYSTEM_TOMSFASTMATH
+#include <tfm.h>
+#else
#define TFM_CHECK
-
#include "bignum_fast.h"
+#endif
+
typedef fp_int mp_int;
#define mp_cmp fp_cmp
#define mp_toradix_n(a,b,c,d) fp_toradix_n(a,b,c,d)
--- a/libclamav/xdp.c
+++ b/libclamav/xdp.c
@@ -57,7 +57,7 @@
#include "scanners.h"
#include "conv.h"
#include "xdp.h"
-#include "bignum_fast.h"
+#include "bignum.h"
#include "filetypes.h"
static char *dump_xdp(cli_ctx *ctx, const char *start, size_t sz);
--- /dev/null
+++ b/m4/reorganization/libs/tomsfastmath.m4
@@ -0,0 +1,12 @@
+dnl Check for system tomsfastmath
+PKG_CHECK_MODULES([TOMSFASTMATH], [tomsfastmath], [have_system_tomsfastmath=yes], [have_system_tomsfastmath=no])
+
+AM_CONDITIONAL([SYSTEM_TOMSFASTMATH], [test "x$have_system_tomsfastmath" = "xyes"])
+
+if test "x$have_system_tomsfastmath" = "xyes"; then
+ AC_DEFINE([HAVE_SYSTEM_TOMSFASTMATH], [1], [link against system-wide tomsfastmath library])
+ tomsfastmath_msg="External, $TOMSFASTMATH_CFLAGS $TOMSFASTMATH_LIBS"
+else
+ AC_DEFINE([HAVE_SYSTEM_TOMSFASTMATH], [0], [don't link against system-wide tomsfastmath library])
+ tomsfastmath_msg="Internal"
+fi

View File

@ -0,0 +1,27 @@
From a293690f29407ac54a218d6d20c2142e1a0319d1 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 31 Oct 2018 00:08:34 -0400
Subject: [PATCH] configure.ac: Fix NO_CHECK_EMACS_PACKAGES elisp.
Remove the extraneous trailing parenthesis.
---
configure.ac | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index de0d932..69bcea7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -25,8 +25,7 @@ AC_MSG_NOTICE("Checking prerequiste packages")
$EMACS -batch -q --no-site-file -eval \
'(dolist (package
(quote (cl-lib loc-changes load-relative test-simple)))
- (require package))
- )'
+ (require package))'
fi
if test $? -ne 0 ; then
AC_MSG_ERROR([Can't continue until above error is corrected.])
--
2.19.0

View File

@ -1,16 +1,28 @@
From 26cac62fe0154cf65c06faaee10805531e9dade8 Mon Sep 17 00:00:00 2001 From bc3b353cb2f26cf10aa5c5caebddf6d3d5b1e318 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu> From: Julien Lepiller <julien@lepiller.eu>
Date: Wed, 14 Dec 2016 14:14:59 +0100 Date: Fri, 21 Sep 2018 22:31:29 +0200
Subject: [PATCH] fix camlp4 in another directory Subject: [PATCH] fix camlp4 in another directory
--- ---
Makefile | 11 ++++++----- Makefile | 11 ++++++-----
configure | 13 ++++++++++++- configure | 13 ++++++++++++-
myocamlbuild.ml | 2 +- tests/Makefile | 2 +-
3 files changed, 19 insertions(+), 7 deletions(-) tests/camlp4-comments/Makefile | 2 +-
tests/camlp4-exclude-file/Makefile | 2 +-
tests/camlp4-exclude/Makefile | 2 +-
tests/camlp4-instrument-fast/Makefile | 2 +-
tests/camlp4-instrument/Makefile | 2 +-
tests/combine-expr/Makefile | 2 +-
tests/ppx-comments/Makefile | 2 +-
tests/ppx-exclude-file/Makefile | 2 +-
tests/ppx-exclude/Makefile | 2 +-
tests/ppx-instrument-fast/Makefile | 2 +-
tests/ppx-instrument/Makefile | 2 +-
tests/report/Makefile | 2 +-
15 files changed, 31 insertions(+), 19 deletions(-)
diff --git a/Makefile b/Makefile diff --git a/Makefile b/Makefile
index 4a8ce17..d94a6d5 100644 index b0980ee..6697922 100644
--- a/Makefile --- a/Makefile
+++ b/Makefile +++ b/Makefile
@@ -25,7 +25,7 @@ PATH_BUILD=$(PATH_BASE)/_build @@ -25,7 +25,7 @@ PATH_BUILD=$(PATH_BASE)/_build
@ -24,7 +36,7 @@ index 4a8ce17..d94a6d5 100644
# DEFINITIONS # DEFINITIONS
@@ -33,7 +33,8 @@ PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect @@ -33,7 +33,8 @@ PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect
PROJECT_NAME=bisect PROJECT_NAME=bisect
OCAMLBUILD=$(PATH_OCAML_PREFIX)/bin/ocamlbuild OCAMLBUILD=ocamlbuild
OCAMLBUILD_ENV=WARNINGS=$(WARNINGS) PATH_OCAML_PREFIX=$(PATH_OCAML_PREFIX) OCAMLBUILD_ENV=WARNINGS=$(WARNINGS) PATH_OCAML_PREFIX=$(PATH_OCAML_PREFIX)
-OCAMLBUILD_FLAGS=-classic-display -no-links -OCAMLBUILD_FLAGS=-classic-display -no-links
+CAMLP4_INCLUDE=$(shell test -z $(CAMLP4_LIBDIR) || echo "-cflags -I,$(CAMLP4_LIBDIR)") +CAMLP4_INCLUDE=$(shell test -z $(CAMLP4_LIBDIR) || echo "-cflags -I,$(CAMLP4_LIBDIR)")
@ -42,13 +54,13 @@ index 4a8ce17..d94a6d5 100644
- cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PATH_OCAML_PREFIX)/bin; \ - cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PATH_OCAML_PREFIX)/bin; \
+ cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PREFIX)/bin; \ + cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PREFIX)/bin; \
fi; \ fi; \
- (test -x $(PATH_OCAML_PREFIX)/bin/ocamlopt && cp $(PATH_BUILD)/src/report/report.native $(PATH_OCAML_PREFIX)/bin/bisect-report.opt || true); \ - (which ocamlopt && cp $(PATH_BUILD)/src/report/report.native $(PATH_OCAML_PREFIX)/bin/bisect-report.opt || true); \
+ (test -x $(PATH_OCAML_PREFIX)/bin/ocamlopt && cp $(PATH_BUILD)/src/report/report.native $(PREFIX)/bin/bisect-report.opt || true); \ + (which ocamlopt && cp $(PATH_BUILD)/src/report/report.native $(PREFIX)/bin/bisect-report.opt || true); \
if [ -x "$(PATH_OCAMLFIND)" ]; then \ if [ -x "$(PATH_OCAMLFIND)" ]; then \
$(PATH_OCAMLFIND) query $(PROJECT_NAME) && $(PATH_OCAMLFIND) remove $(PROJECT_NAME) || true; \ $(PATH_OCAMLFIND) query $(PROJECT_NAME) && $(PATH_OCAMLFIND) remove $(PROJECT_NAME) || true; \
$(PATH_OCAMLFIND) install $(PROJECT_NAME) META -optional \ $(PATH_OCAMLFIND) install $(PROJECT_NAME) META -optional \
diff --git a/configure b/configure diff --git a/configure b/configure
index bb7ebf4..61a3095 100755 index bb7ebf4..43ef46b 100755
--- a/configure --- a/configure
+++ b/configure +++ b/configure
@@ -21,7 +21,9 @@ @@ -21,7 +21,9 @@
@ -79,7 +91,7 @@ index bb7ebf4..61a3095 100755
ppx='TRUE';; ppx='TRUE';;
*) *)
- echo "usage: $0 [-ocaml-prefix <path>] [-ocamlfind <path>] [-no-native-dynlink] [-devel]"; - echo "usage: $0 [-ocaml-prefix <path>] [-ocamlfind <path>] [-no-native-dynlink] [-devel]";
+ echo "usage: $0 [-prefix <path>] [-ocaml-prefix <path>] [-ocamlfind <path>] [-no-native-dynlink] [-devel]"; + echo "usage: $0 [-prefix <path>] [-ocaml-prefix <path>] [-camlp4-prefix <path>] [-ocamlfind <path>] [-no-native-dynlink] [-devel]";
exit 1;; exit 1;;
esac esac
shift shift
@ -93,33 +105,179 @@ index bb7ebf4..61a3095 100755
# make options # make options
make_quiet=`make -f - <<EOF make_quiet=`make -f - <<EOF
default: gnumake default: gnumake
@@ -67,11 +76,13 @@ EOF` @@ -66,7 +75,9 @@ EOF`
# file creation # file creation
echo "# timestamp: `date`" > Makefile.config echo "# timestamp: `date`" > Makefile.config
+echo "PREFIX=$prefix" >> Makefile.config
echo "PATH_OCAML_PREFIX=$ocaml_prefix" >> Makefile.config echo "PATH_OCAML_PREFIX=$ocaml_prefix" >> Makefile.config
+echo "PATH_CAMLP4_PREFIX=$camlp4_prefix" >> Makefile.config +echo "PATH_CAMLP4_PREFIX=$camlp4_prefix" >> Makefile.config
echo "PATH_OCAMLFIND=$ocamlfind" >> Makefile.config echo "PATH_OCAMLFIND=$ocamlfind" >> Makefile.config
echo "NATIVE_DYNLINK=$native_dynlink" >> Makefile.config echo "NATIVE_DYNLINK=$native_dynlink" >> Makefile.config
echo "WARNINGS=$devel" >> Makefile.config echo "WARNINGS=$devel" >> Makefile.config
echo "NO_CAMLP4=$no_camlp4" >> Makefile.config diff --git a/tests/Makefile b/tests/Makefile
echo "PPX=$ppx" >> Makefile.config index 1aba27f..9642323 100644
echo "MAKE_QUIET=$make_quiet" >> Makefile.config --- a/tests/Makefile
+echo "PREFIX=$prefix" >> Makefile.config +++ b/tests/Makefile
echo "" >> Makefile.config @@ -41,7 +41,7 @@ one: FORCE
echo 'Makefile.config successfully created' else \
diff --git a/myocamlbuild.ml b/myocamlbuild.ml echo "Running tests for '$(NAME)'..." | tee -a _log; \
index 8aa25fd..09a7d48 100644 (cd $(NAME) && \
--- a/myocamlbuild.ml - $(MAKE) PATH_OCAML_BIN=$(PATH_OCAML_PREFIX)/bin \
+++ b/myocamlbuild.ml + $(MAKE) PATH_OCAML_BIN=$(PATH_OCAML_PREFIX)/bin PATH_CAMLP4_PREFIX=$(PATH_CAMLP4_PREFIX) \
@@ -70,7 +70,7 @@ let () = COMPILER=ocamlc EXECUTABLE=bytecode RUN=./ LIB_EXT=cma EXE_SUFFIX='' \
| After_rules -> REPORT=../../_build/src/report/report.byte && \
let camlp4of = cd ..) || echo '*** error' >> _log; \
try diff --git a/tests/camlp4-comments/Makefile b/tests/camlp4-comments/Makefile
- let path_bin = Filename.concat (Sys.getenv "PATH_OCAML_PREFIX") "bin" in index 33fca72..a918118 100644
+ let path_bin = Filename.concat (Sys.getenv "PATH_CAMLP4_PREFIX") "bin" in --- a/tests/camlp4-comments/Makefile
Filename.concat path_bin "camlp4of" +++ b/tests/camlp4-comments/Makefile
with _ -> "camlp4of" in @@ -2,7 +2,7 @@ default:
flag ["ocaml"; "compile"; "pp_camlp4of"] (S[A"-pp"; A camlp4of]); @rm -fr *.result *.cmp
-- @for file in *.ml; do \
2.7.4 echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cmp
diff --git a/tests/camlp4-exclude-file/Makefile b/tests/camlp4-exclude-file/Makefile
index ab13983..e2520fa 100644
--- a/tests/camlp4-exclude-file/Makefile
+++ b/tests/camlp4-exclude-file/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cmp
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude-file exclusions -o $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude-file exclusions -o $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cmp
diff --git a/tests/camlp4-exclude/Makefile b/tests/camlp4-exclude/Makefile
index 18aada4..d71a7bc 100644
--- a/tests/camlp4-exclude/Makefile
+++ b/tests/camlp4-exclude/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cmp
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude 'f.*' -o $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude 'f.*' -o $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cmp
diff --git a/tests/camlp4-instrument-fast/Makefile b/tests/camlp4-instrument-fast/Makefile
index f60767f..8506e38 100644
--- a/tests/camlp4-instrument-fast/Makefile
+++ b/tests/camlp4-instrument-fast/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cmp
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo -mode fast $$file -o $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo -mode fast $$file -o $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cmp
diff --git a/tests/camlp4-instrument/Makefile b/tests/camlp4-instrument/Makefile
index 33fca72..a918118 100644
--- a/tests/camlp4-instrument/Makefile
+++ b/tests/camlp4-instrument/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cmp
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cmp
diff --git a/tests/combine-expr/Makefile b/tests/combine-expr/Makefile
index 46ae9eb..e8e2af2 100644
--- a/tests/combine-expr/Makefile
+++ b/tests/combine-expr/Makefile
@@ -1,4 +1,4 @@
-COMPILE_FLAGS=-I ../../_build -pp '$(PATH_OCAML_BIN)/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
+COMPILE_FLAGS=-I ../../_build -pp '$(PATH_CAMLP4_PREFIX)/bin/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
default: clean compile run report
diff --git a/tests/ppx-comments/Makefile b/tests/ppx-comments/Makefile
index f8c645a..667526f 100644
--- a/tests/ppx-comments/Makefile
+++ b/tests/ppx-comments/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cm*
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cm*
diff --git a/tests/ppx-exclude-file/Makefile b/tests/ppx-exclude-file/Makefile
index a575a77..0dd1a20 100644
--- a/tests/ppx-exclude-file/Makefile
+++ b/tests/ppx-exclude-file/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cm*
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -exclude-file exclusions' -dsource $$file 2> $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -exclude-file exclusions' -dsource $$file 2> $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cm*
diff --git a/tests/ppx-exclude/Makefile b/tests/ppx-exclude/Makefile
index a517af4..f502a42 100644
--- a/tests/ppx-exclude/Makefile
+++ b/tests/ppx-exclude/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cm*
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx "../../_build/src/syntax/bisect_ppx.byte -exclude 'f.*'" -dsource $$file 2> $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx "../../_build/src/syntax/bisect_ppx.byte -exclude 'f.*'" -dsource $$file 2> $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cm*
diff --git a/tests/ppx-instrument-fast/Makefile b/tests/ppx-instrument-fast/Makefile
index da78bb6..1195988 100644
--- a/tests/ppx-instrument-fast/Makefile
+++ b/tests/ppx-instrument-fast/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cm*
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -mode fast' -dsource $$file 2> $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -mode fast' -dsource $$file 2> $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cm*
diff --git a/tests/ppx-instrument/Makefile b/tests/ppx-instrument/Makefile
index f8c645a..667526f 100644
--- a/tests/ppx-instrument/Makefile
+++ b/tests/ppx-instrument/Makefile
@@ -2,7 +2,7 @@ default:
@rm -fr *.result *.cm*
@for file in *.ml; do \
echo " testing '$$file' ..."; \
- $(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
+ $(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
diff -q $$file.reference $$file.result || exit 1; \
done
@rm -fr *.result *.cm*
diff --git a/tests/report/Makefile b/tests/report/Makefile
index a7ffe44..a968bf9 100644
--- a/tests/report/Makefile
+++ b/tests/report/Makefile
@@ -1,4 +1,4 @@
-COMPILE_FLAGS=-I ../../_build -pp '$(PATH_OCAML_BIN)/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
+COMPILE_FLAGS=-I ../../_build -pp '$(PATH_CAMLP4_PREFIX)/bin/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
XMLLINT=$(shell which xmllint)
default: clean compile run report
--
2.18.0

View File

@ -0,0 +1,76 @@
From dac089515901d6bf315cd15a6e744b8d2c02c1cb Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Date: Sat, 31 Oct 2015 22:48:07 +0100
Subject: [PATCH] tfm: make a few functions static
clamav expects them to be static and it does not seem bad to do so.
Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
src/bin/fp_read_radix.c | 2 +-
src/bin/fp_read_signed_bin.c | 2 +-
src/bin/fp_read_unsigned_bin.c | 2 +-
src/headers/tfm.h | 6 +++---
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/bin/fp_read_radix.c b/src/bin/fp_read_radix.c
index 0b5e826..431afa0 100644
--- a/src/bin/fp_read_radix.c
+++ b/src/bin/fp_read_radix.c
@@ -9,7 +9,7 @@
*/
#include <tfm_private.h>
-int fp_read_radix(fp_int *a, char *str, int radix)
+int fp_read_radix(fp_int *a, const char *str, int radix)
{
int y, neg;
char ch;
diff --git a/src/bin/fp_read_signed_bin.c b/src/bin/fp_read_signed_bin.c
index e2b8003..6467d19 100644
--- a/src/bin/fp_read_signed_bin.c
+++ b/src/bin/fp_read_signed_bin.c
@@ -9,7 +9,7 @@
*/
#include <tfm_private.h>
-void fp_read_signed_bin(fp_int *a, unsigned char *b, int c)
+void fp_read_signed_bin(fp_int *a, const unsigned char *b, int c)
{
/* read magnitude */
fp_read_unsigned_bin (a, b + 1, c - 1);
diff --git a/src/bin/fp_read_unsigned_bin.c b/src/bin/fp_read_unsigned_bin.c
index 3ee64c0..2ee89cb 100644
--- a/src/bin/fp_read_unsigned_bin.c
+++ b/src/bin/fp_read_unsigned_bin.c
@@ -9,7 +9,7 @@
*/
#include <tfm_private.h>
-void fp_read_unsigned_bin(fp_int *a, unsigned char *b, int c)
+void fp_read_unsigned_bin(fp_int *a, const unsigned char *b, int c)
{
/* zero the int */
fp_zero (a);
diff --git a/src/headers/tfm.h b/src/headers/tfm.h
index af87b56..f406388 100644
--- a/src/headers/tfm.h
+++ b/src/headers/tfm.h
@@ -467,14 +467,14 @@ int fp_prime_random_ex(fp_int *a, int t, int size, int flags, tfm_prime_callback
int fp_count_bits(fp_int *a);
int fp_unsigned_bin_size(fp_int *a);
-void fp_read_unsigned_bin(fp_int *a, unsigned char *b, int c);
+void fp_read_unsigned_bin(fp_int *a, const unsigned char *b, int c);
void fp_to_unsigned_bin(fp_int *a, unsigned char *b);
int fp_signed_bin_size(fp_int *a);
-void fp_read_signed_bin(fp_int *a, unsigned char *b, int c);
+void fp_read_signed_bin(fp_int *a, const unsigned char *b, int c);
void fp_to_signed_bin(fp_int *a, unsigned char *b);
-int fp_read_radix(fp_int *a, char *str, int radix);
+int fp_read_radix(fp_int *a, const char *str, int radix);
int fp_radix_size(fp_int *a, int radix, int *size);
int fp_toradix(fp_int *a, char *str, int radix);

View File

@ -2381,48 +2381,22 @@ logic-free templating system Mustache.")
(define-public python-joblib (define-public python-joblib
(package (package
(name "python-joblib") (name "python-joblib")
(version "0.10.3") (version "0.13.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "joblib" version)) (uri (pypi-uri "joblib" version))
(sha256 (sha256
(base32 (base32
"0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9")) "0612nazad8dxmn3xghfrmjax6456l4xy6hn9cngs7vydi14ds7v5"))))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove pre-compiled .pyc files from source.
(for-each delete-file-recursively
(find-files "." "__pycache__" #:directories? #t))
(for-each delete-file (find-files "." "\\.pyc$"))
#t))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'check 'disable-failing-tests (replace 'check
(lambda _ (lambda _ (invoke "pytest" "-v" "joblib"))))))
;; This numpydoc tests fails for unknown reasons
(delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
;; This numpydoc test depends on matplotlib, which is not a
;; required input.
(delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
;; These tests fail to execute sys.executable
(substitute* "joblib/test/test_parallel.py"
(("import nose" line)
(string-append "from nose.plugins.skip import SkipTest\n" line))
(("def test_nested_parallel_warnings" line)
(string-append "@SkipTest\n" line))
(("def test_parallel_with_interactively_defined_functions" line)
(string-append "@SkipTest\n" line)))
#t)))))
;; Provide nose to enable tests command
(native-inputs (native-inputs
`(("python-nose" ,python-nose) `(("python-pytest" ,python-pytest)))
("python-sphinx" ,python-sphinx) (home-page "https://joblib.readthedocs.io/")
("python-docutils" ,python-docutils)
("python-numpydoc" ,python-numpydoc)))
(home-page "http://pythonhosted.org/joblib/")
(synopsis "Using Python functions as pipeline jobs") (synopsis "Using Python functions as pipeline jobs")
(description (description
"Joblib is a set of tools to provide lightweight pipelining in Python. "Joblib is a set of tools to provide lightweight pipelining in Python.
@ -9875,7 +9849,7 @@ and/or Xon/Xoff. The port is accessed in RAW mode.")
(define-public python-kivy (define-public python-kivy
(package (package
(name "python-kivy") (name "python-kivy")
(version "1.10.0") (version "1.10.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -9883,7 +9857,7 @@ and/or Xon/Xoff. The port is accessed in RAW mode.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1394zh6kvf7k5d8vlzxcsfcailr3q59xwg9b1n7qaf25bvyq1h98")))) "1zzxjdp78hfjjiklzr82l4zwibwcq4j6kgicspqs6iyyfn5yisbw"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:tests? #f ; Tests require many optional packages `(#:tests? #f ; Tests require many optional packages
@ -10126,26 +10100,41 @@ Python to manipulate OpenDocument 1.2 files.")
(define-public python-natsort (define-public python-natsort
(package (package
(name "python-natsort") (name "python-natsort")
(version "5.0.2") (version "5.4.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "natsort" version)) (uri (pypi-uri "natsort" version))
(sha256 (sha256
(base32 (base32
"0bh6j0l8iapjnsgg3bs6q075cnzjl6zw1vlgqyv3qrygm2cxypkn")))) "0i732amg6yzkx4g4c9j09jmqq39q377x9cl2nbkm5hax2c2v0wxf"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:modules ((guix build utils)
(guix build python-build-system)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 ftw))
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'check 'set-cachedir (add-before 'check 'set-cachedir
;; Tests require write access to $HOME by default ;; Tests require write access to $HOME by default
(lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t))))) (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t))
(replace 'check
(lambda _
(let ((cwd (getcwd)))
(setenv "PYTHONPATH"
(string-append
cwd "/build/"
(find (cut string-prefix? "lib" <>)
(scandir (string-append cwd "/build")))
":"
(getenv "PYTHONPATH")))
(invoke "pytest" "-v")))))))
(native-inputs (native-inputs
`(("python-hypothesis" ,python-hypothesis) `(("python-hypothesis" ,python-hypothesis)
("python-pytest-cache" ,python-pytest-cache)
("python-pytest-cov" ,python-pytest-cov) ("python-pytest-cov" ,python-pytest-cov)
("python-pytest-flakes" ,python-pytest-flakes) ("python-pytest-mock" ,python-pytest-mock)
("python-pytest-pep8" ,python-pytest-pep8))) ("python-pytest" ,python-pytest)))
(propagated-inputs ; TODO: Add python-fastnumbers. (propagated-inputs ; TODO: Add python-fastnumbers.
`(("python-pyicu" ,python-pyicu))) `(("python-pyicu" ,python-pyicu)))
(home-page "https://github.com/SethMMorton/natsort") (home-page "https://github.com/SethMMorton/natsort")
@ -10167,8 +10156,6 @@ functionality in the command line.")
(package (inherit base) (package (inherit base)
(native-inputs (native-inputs
`(("python2-pathlib" ,python2-pathlib) `(("python2-pathlib" ,python2-pathlib)
("python2-mock" ,python2-mock)
("python2-enum34" ,python2-enum34)
,@(package-native-inputs base)))))) ,@(package-native-inputs base))))))
(define-public python-glances (define-public python-glances

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com> ;;; Copyright © 2017, 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -18,10 +18,13 @@
(define-module (gnu packages simulation) (define-module (gnu packages simulation)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
@ -35,6 +38,8 @@
#:use-module (gnu packages mpi) #:use-module (gnu packages mpi)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages readline) #:use-module (gnu packages readline)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
@ -42,7 +47,9 @@
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix utils) #:use-module (guix utils)
@ -221,3 +228,484 @@ with gas/liquid interfaces. Large problems may be split into smaller, connected
problems for efficient solution on parallel systems.") problems for efficient solution on parallel systems.")
(license license:gpl3+) (license license:gpl3+)
(home-page "https://openfoam.org"))) (home-page "https://openfoam.org")))
(define-public python-fenics-dijitso
(package
(name "python-fenics-dijitso")
(version "2018.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fenics-dijitso" version))
(sha256
(base32
"1qax2f52qsjbd1h5lk5i5shp448qlakxabjjybrfc1w823p0yql9"))))
(build-system python-build-system)
(inputs
`(("openmpi" ,openmpi)
("python-numpy" ,python-numpy)))
(native-inputs
`(("python-pytest-cov" ,python-pytest-cov)))
(propagated-inputs
`(("python-mpi4py" ,python-mpi4py)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'build 'mpi-setup
,%openmpi-setup)
(replace 'check
(lambda _
(setenv "HOME" "/tmp")
(setenv "PYTHONPATH"
(string-append (getcwd) ":" (getenv "PYTHONPATH")))
(with-directory-excursion "test"
(invoke "./runtests.sh"))
#t)))))
(home-page "https://bitbucket.org/fenics-project/dijitso/")
(synopsis "Distributed just-in-time building of shared libraries")
(description
"Dijitso provides a core component of the @code{FEniCS} framework,
namely the just-in-time compilation of C++ code that is generated from
Python modules. It is called from within a C++ library, using ctypes
to import the dynamic shared library directly.
As long as the compiled code can provide a simple factory function to
a class implementing a predefined C++ interface, there is no limit to
the complexity of that interface. Parallel support depends on the
@code{mpi4py} interface.")
(license license:lgpl3+)))
(define-public python-fenics-ufl
(package
(name "python-fenics-ufl")
(version "2018.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fenics-ufl" version))
(sha256
(base32
"1fq8yc86s1s3c8c0b1rc2vf265q0hrkzg57100fg1nghcz0p4vla"))))
(build-system python-build-system)
(inputs
`(("python-numpy" ,python-numpy)))
(native-inputs
`(("python-pytest" ,python-pytest)))
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(setenv "PYTHONPATH"
(string-append (getcwd) ":" (getenv "PYTHONPATH")))
(with-directory-excursion "test"
(invoke "py.test"))
#t)))))
(home-page "https://bitbucket.org/fenics-project/ufl/")
(synopsis "Unified language for form-compilers")
(description "The Unified Form Language (UFL) is a domain specific
language for declaration of finite element discretizations of
variational forms. More precisely, it defines a flexible interface
for choosing finite element spaces and defining expressions for weak
forms in a notation close to mathematical notation.
UFL is part of the FEniCS Project.")
(license license:lgpl3+)))
(define-public python-fenics-fiat
(package
(name "python-fenics-fiat")
(version "2018.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fenics-fiat" version))
(sha256
(base32
"0fmjd93r6bwf6xs8csw86qzphrnr66xwv7f372w59gmq8mg6rljc"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)))
(propagated-inputs
`(("python-numpy" ,python-numpy)
("python-sympy" ,python-sympy)))
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(setenv "PYTHONPATH"
(string-append (getcwd) ":" (getenv "PYTHONPATH")))
(with-directory-excursion "test"
(invoke "py.test" "unit/"))
#t)))))
(home-page "https://bitbucket.org/fenics-project/fiat/")
(synopsis "Tabulation of finite element function spaces")
(description
"The FInite element Automatic Tabulator (FIAT) supports
generation of arbitrary order instances of the Lagrange elements on
lines, triangles, and tetrahedra. It is also capable of generating
arbitrary order instances of Jacobi-type quadrature rules on the same
element shapes. Further, H(div) and H(curl) conforming finite element
spaces such as the families of Raviart-Thomas, Brezzi-Douglas-Marini
and Nedelec are supported on triangles and tetrahedra. Upcoming
versions will also support Hermite and nonconforming elements.
FIAT is part of the FEniCS Project.")
(license license:lgpl3+)))
(define-public python-fenics-ffc
(package
(name "python-fenics-ffc")
(version "2018.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fenics-ffc" version))
(sha256
(base32
"1b2ia5vlkw298x7rf0k2p3ihlpwkwgc98p3s6sbpds3hqmfrzdz9"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)))
(propagated-inputs
`(("python-fenics-dijitso" ,python-fenics-dijitso)
("python-fenics-fiat" ,python-fenics-fiat)
("python-fenics-ufl" ,python-fenics-ufl)))
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(setenv "HOME" (getcwd))
(setenv "PYTHONPATH"
(string-append (getcwd) ":" (getenv "PYTHONPATH")))
(with-directory-excursion "test"
;; FIXME: the tests in subdirectory
;; 'unit/ufc/finite_element' require the ffc_factory
;; extension module. This module, located in the 'libs'
;; subdirectory, needs to be built and made accessible
;; prior to running the tests.
(invoke "py.test" "unit/" "--ignore=unit/ufc/")
(with-directory-excursion "uflacs"
(invoke "py.test" "unit/")))
#t)))))
(home-page "https://bitbucket.org/fenics-project/ffc/")
(synopsis "Compiler for finite element variational forms")
(description "The FEniCS Form Compiler (FFC) is a compiler for
finite element variational forms. From a high-level description of
the form, it generates efficient low-level C++ code that can be used
to assemble the corresponding discrete operator (tensor). In
particular, a bilinear form may be assembled into a matrix and a
linear form may be assembled into a vector. FFC may be used either
from the command line (by invoking the @code{ffc} command) or as a
Python module (@code{import ffc}).
FFC is part of the FEniCS Project.")
;; There are two files released with a public domain licence;
;; ufc.h and ufc_geometry.h, in subdirectory 'ffc/backends/ufc'.
(license (list license:public-domain license:lgpl3+))))
(define-public fenics-dolfin
(package
(name "fenics-dolfin")
(version "2018.1.0.post1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://bitbucket.org/fenics-project/dolfin/get/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"12zkk8j3xsg6l8p0ggwsl03084vlcivw4h99b7z9kndg7k89b3ya"))
(modules '((guix build utils)))
(snippet
'(begin
;; Make sure we don't use the bundled test framework.
(delete-file-recursively "test/unit/cpp/catch")
(substitute* "test/unit/cpp/main.cpp"
;; Use standard search paths for 'catch' header file.
(("#include.*")
"#include <catch.hpp>\n"))
(substitute* "test/unit/cpp/CMakeLists.txt"
;; Add extra include directories required by the unit tests.
(("(^target_link_libraries.*)" line)
(string-append line "\n"
"target_include_directories("
"unittests PRIVATE "
"${DOLFIN_SOURCE_DIR} "
"${DOLFIN_SOURCE_DIR}/dolfin "
"${DOLFIN_BINARY_DIR})\n"))
(("(^set\\(CATCH_INCLUDE_DIR ).*(/catch\\))" _ front back)
(string-append front
"$ENV{CATCH_DIR}"
"/include" back "\n")))
(substitute* "demo/CMakeLists.txt"
;; Add extra include directories required by the demo tests.
(("(^#find_package.*)" line)
(string-append line "\n"
"include_directories("
"${DOLFIN_SOURCE_DIR} "
"${DOLFIN_SOURCE_DIR}/dolfin "
"${DOLFIN_BINARY_DIR})\n")))
#t))))
(build-system cmake-build-system)
(inputs
`(("blas" ,openblas)
("boost" ,boost)
("eigen" ,eigen)
("hdf5" ,hdf5-parallel-openmpi)
("lapack" ,lapack)
("libxml2" ,libxml2)
("openmpi" ,openmpi)
("python" ,python-3)
("scotch" ,pt-scotch32)
("suitesparse" ,suitesparse)
("sundials" ,sundials-openmpi)
("zlib" ,zlib)))
(native-inputs
`(("catch" ,catch-framework2)
("pkg-config" ,pkg-config)))
(propagated-inputs
`(("ffc" ,python-fenics-ffc)
("petsc" ,petsc-openmpi)
("slepc" ,slepc-openmpi)))
(arguments
`(#:configure-flags
`("-DDOLFIN_ENABLE_DOCS:BOOL=OFF"
"-DDOLFIN_ENABLE_HDF5:BOOL=ON"
"-DDOLFIN_ENABLE_MPI:BOOL=ON"
"-DDOLFIN_ENABLE_PARMETIS:BOOL=OFF"
"-DDOLFIN_ENABLE_SCOTCH:BOOL=ON"
"-DDOLFIN_ENABLE_SUNDIALS:BOOL=ON"
"-DDOLFIN_ENABLE_TRILINOS:BOOL=OFF")
#:phases
(modify-phases %standard-phases
(add-after 'patch-usr-bin-file 'mpi-setup
,%openmpi-setup)
(add-after 'patch-source-shebangs 'set-paths
(lambda _
;; Define paths to store locations.
(setenv "BLAS_DIR" (assoc-ref %build-inputs "blas"))
(setenv "CATCH_DIR" (assoc-ref %build-inputs "catch"))
(setenv "LAPACK_DIR" (assoc-ref %build-inputs "lapack"))
(setenv "PETSC_DIR" (assoc-ref %build-inputs "petsc"))
(setenv "SLEPC_DIR" (assoc-ref %build-inputs "slepc"))
(setenv "SCOTCH_DIR" (assoc-ref %build-inputs "scotch"))
(setenv "SUNDIALS_DIR" (assoc-ref %build-inputs "sundials"))
(setenv "UMFPACK_DIR" (assoc-ref %build-inputs "suitesparse"))
#t))
(add-before 'check 'pre-check
(lambda _
;; The Dolfin repository uses git-lfs, whereby web links are
;; substituted for large files. Guix does not currently support
;; git-lfs, so only the links are downloaded. The tests that
;; require the absent meshes cannot run and are skipped.
;;
;; Two other serial tests fail and are skipped.
;; i) demo_stokes-iterative_serial,
;; The MPI_Comm_rank() function was called before MPI_INIT was
;; invoked
;; ii) demo_multimesh-stokes_serial:
;; Warning: Found no facets matching domain for boundary
;; condition.
;;
;; One mpi test fails and is skipped.
;; i) demo_stokes-iterative_mpi:
;; The MPI_Comm_rank() function was called before MPI_INIT was
;; invoked
(call-with-output-file "CTestCustom.cmake"
(lambda (port)
(display
(string-append
"set(CTEST_CUSTOM_TESTS_IGNORE "
"demo_bcs_serial "
"demo_bcs_mpi "
"demo_eigenvalue_serial "
"demo_eigenvalue_mpi "
"demo_navier-stokes_serial "
"demo_navier-stokes_mpi "
"demo_stokes-taylor-hood_serial "
"demo_stokes-taylor-hood_mpi "
"demo_subdomains_serial "
"demo_advection-diffusion_serial "
"demo_advection-diffusion_mpi "
"demo_auto-adaptive-navier-stokes_serial "
"demo_contact-vi-snes_serial "
"demo_contact-vi-snes_mpi "
"demo_contact-vi-tao_serial "
"demo_contact-vi-tao_mpi "
"demo_curl-curl_serial "
"demo_curl-curl_mpi "
"demo_dg-advection-diffusion_serial "
"demo_dg-advection-diffusion_mpi "
"demo_elasticity_serial "
"demo_elasticity_mpi "
"demo_elastodynamics_serial "
"demo_elastodynamics_mpi "
"demo_lift-drag_serial "
"demo_lift-drag_mpi "
"demo_mesh-quality_serial "
"demo_mesh-quality_mpi "
"demo_multimesh-stokes_serial "
"demo_stokes-iterative_serial "
"demo_stokes-iterative_mpi "
")\n") port)))
#t))
(replace 'check
(lambda _
(and (invoke "make" "unittests")
(invoke "make" "demos")
(invoke "ctest" "-R" "unittests")
(invoke "ctest" "-R" "demo" "-R" "serial")
(invoke "ctest" "-R" "demo" "-R" "mpi")))))))
(home-page "https://bitbucket.org/fenics-project/dolfin/")
(synopsis "Problem solving environment for differential equations")
(description
"DOLFIN is a computational framework for finding numerical
solutions to problems described by differential equations. Numerical
models in DOLFIN are constructed using general families of finite
elements. Data structures are provided for discretizing the governing
system on a computational mesh. A compact syntax, similar to
mathematical notation, is made available for defining function spaces
and expressing variational forms. Interfaces to specialized matrix
solvers are provided for solving the resultant linear systems.
@code{fenics-dolfin} is part of the FEniCS project. It is the C++
user interface to the FEniCS core components and external libraries.")
;; The source code for the DOLFIN C++ library is licensed under the
;; GNU Lesser General Public License, version 3 or later, with the
;; following exceptions:
;;
;; public-domain: dolfin/geometry/predicates.cpp
;; dolfin/geometry/predicates.h
;;
;; zlib: dolfin/io/base64.cpp
;; dolfin/io/base64.h
;;
;; expat: dolfin/io/pugiconfig.hpp
;; dolfin/io/pugixml.cpp
;; dolfin/io/pugixml.hpp
(license (list license:public-domain
license:zlib
license:expat
license:lgpl3+))))
(define-public fenics
(package (inherit fenics-dolfin)
(name "fenics")
(build-system python-build-system)
(inputs
`(("pybind11" ,pybind11)
("python-matplotlib" ,python-matplotlib)
,@(alist-delete "python" (package-inputs fenics-dolfin))))
(native-inputs
`(("cmake" ,cmake)
("ply" ,python-ply)
("pytest" ,python-pytest)
("python-decorator" ,python-decorator)
("python-pkgconfig" ,python-pkgconfig)
,@(package-native-inputs fenics-dolfin)))
(propagated-inputs
`(("dolfin" ,fenics-dolfin)
("petsc4py" ,python-petsc4py)
("slepc4py" ,python-slepc4py)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'patch-source-shebangs 'set-paths
(lambda _
;; Define paths to store locations.
(setenv "PYBIND11_DIR" (assoc-ref %build-inputs "pybind11"))
;; Move to python sub-directory.
(chdir "python")
#t))
(add-after 'build 'mpi-setup
,%openmpi-setup)
(add-before 'check 'pre-check
(lambda _
;; Exclude tests that require meshes supplied by git-lfs.
(substitute* "demo/test.py"
(("(.*stem !.*)" line)
(string-append
line "\n"
"excludeList = [\n"
"'multimesh-quadrature', \n"
"'multimesh-marking', \n"
"'mixed-poisson-sphere', \n"
"'mesh-quality', \n"
"'lift-drag', \n"
"'elastodynamics', \n"
"'dg-advection-diffusion', \n"
"'contact-vi-tao', \n"
"'contact-vi-snes', \n"
"'collision-detection', \n"
"'buckling-tao', \n"
"'auto-adaptive-navier-stokes', \n"
"'advection-diffusion', \n"
"'subdomains', \n"
"'stokes-taylor-hood', \n"
"'stokes-mini', \n"
"'navier-stokes', \n"
"'eigenvalue']\n"
"demos = ["
"d for d in demos if d[0].stem not in "
"excludeList]\n")))
(setenv "HOME" (getcwd))
(setenv "PYTHONPATH"
(string-append
(getcwd) "/build/lib.linux-x86_64-"
,(version-major+minor (package-version python)) ":"
(getenv "PYTHONPATH")))
;; Restrict OpenBLAS to MPI-only in preference to MPI+OpenMP.
(setenv "OPENBLAS_NUM_THREADS" "1")
#t))
(replace 'check
(lambda _
(with-directory-excursion "test"
;; Note: The test test_snes_set_from_options() in the file
;; unit/nls/test_PETScSNES_solver.py fails and is ignored.
(and (invoke "py.test" "unit" "--ignore"
"unit/nls/test_PETScSNES_solver.py")
(invoke "mpirun" "-np" "3" "python" "-B" "-m"
"pytest" "unit" "--ignore"
"unit/nls/test_PETScSNES_solver.py")))
(with-directory-excursion "demo"
;; Check demos.
(invoke "python" "generate-demo-files.py")
(and (invoke "python" "-m" "pytest" "-v" "test.py")
(invoke "python" "-m" "pytest" "-v" "test.py"
"--mpiexec=mpiexec" "--num-proc=3")))
#t))
(add-after 'install 'install-demo-files
(lambda* (#:key outputs #:allow-other-keys)
(let* ((demos (string-append
(assoc-ref outputs "out")
"/share/python-dolfin/demo")))
(mkdir-p demos)
(with-directory-excursion "demo"
(for-each (lambda (file)
(let* ((dir (dirname file))
(tgt-dir (string-append demos "/" dir)))
(unless (equal? "." dir)
(mkdir-p tgt-dir)
(install-file file tgt-dir))))
(find-files "." ".*\\.(py|gz|xdmf)$"))))
#t)))))
(home-page "https://fenicsproject.org/")
(synopsis "High-level environment for solving differential equations")
(description
"@code{fenics} is a computing platform for solving general classes of
problems that involve differential equations. @code{fenics} facilitates
access to efficient methods for dealing with ordinary differential
equations (ODEs) and partial differential equations (PDEs). Systems of
equations such as these are commonly encountered in areas of engineering,
mathematics and the physical sciences. It is particularly well-suited to
problems that can be solved using the Finite Element Method (FEM).
@code{fenics} is the top level of the set of packages that are developed
within the FEniCS project. It provides the python user interface to the
FEniCS core components and external libraries.")
(license license:lgpl3+)))

View File

@ -2300,14 +2300,14 @@ collation, and NAMESPACE files.")
(define-public r-openssl (define-public r-openssl
(package (package
(name "r-openssl") (name "r-openssl")
(version "1.0.2") (version "1.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "openssl" version)) (uri (cran-uri "openssl" version))
(sha256 (sha256
(base32 (base32
"1djfpnphkcxx8idk5rjfzg8r8dnqsgc0shh2pw8lns5hap2wc5rc")))) "0ldxgcr33lawwr8wp14kdk2678gpkvqkzv6g333bhck1hn6qspzv"))))
(build-system r-build-system) (build-system r-build-system)
(inputs (inputs
`(("libressl" ,libressl))) `(("libressl" ,libressl)))
@ -4706,14 +4706,14 @@ models, generalized linear models and model-based clustering.")
(define-public r-mclust (define-public r-mclust
(package (package
(name "r-mclust") (name "r-mclust")
(version "5.4.1") (version "5.4.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "mclust" version)) (uri (cran-uri "mclust" version))
(sha256 (sha256
(base32 (base32
"1vcl4nl8by2vj2k9k84imy5m850khkgd8q02a8ica1h8vz9ijgn4")))) "09152swfpa3fzhmrq5cwb5kxgvrxvigv1m4v6rhcibrdhfd1x8x4"))))
(build-system r-build-system) (build-system r-build-system)
(native-inputs (native-inputs
`(("gfortran" ,gfortran))) `(("gfortran" ,gfortran)))

View File

@ -2279,3 +2279,55 @@ used to keep a folder in sync between computers.")
;; The web app is released under the AGPLv3+. ;; The web app is released under the AGPLv3+.
(license (list license:gpl3+ (license (list license:gpl3+
license:agpl3+)))) license:agpl3+))))
(define-public git-when-merged
;; Use an unreleased version to get a PY3 compatibility fix.
(let ((commit "ab6af7865a0ba55ba364a6c507e0be6f84f31c6d"))
(package
(name "git-when-merged")
(version (string-append "1.2.0-" (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/mhagger/git-when-merged/")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0iyk2psf97bc9h43m89p3xjmm79fsx99i7px29g4lcnmdy5kmz0p"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; there are no tests
#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'build)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(install-file "bin/git-when-merged"
(string-append (assoc-ref outputs "out")
"/bin"))
#t))
(add-before 'install 'patch-git
(lambda* (#:key inputs #:allow-other-keys)
(let ((git (string-append (assoc-ref inputs "git")
"/bin/git")))
(substitute* "bin/git-when-merged"
(("'git'") (string-append "'" git "'")))
#t)))
(add-after 'install 'wrap-script
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/git-when-merged")
`("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
#t)))))
(inputs
`(("git" ,git)
("python" ,python-wrapper)))
(home-page "https://github.com/mhagger/git-when-merged")
(synopsis "Determine when a commit was merged into a Git branch")
(description "This Git extension defines a subcommand,
@code{when-merged}, whose core operation is to find the merge that brought a
given commit into the specified ref(s). It has various options that control
how information about the merge is displayed.")
(license license:gpl2+))))

View File

@ -5645,14 +5645,14 @@ application framework for R, making it easy to create attractive dashboards.")
(define-public r-shinyfiles (define-public r-shinyfiles
(package (package
(name "r-shinyfiles") (name "r-shinyfiles")
(version "0.7.1") (version "0.7.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "shinyFiles" version)) (uri (cran-uri "shinyFiles" version))
(sha256 (sha256
(base32 (base32
"1cbg09l7w2zbgxb4qjm9p873p0lzrihlzsk5xxi3cpxdckn6zsrm")))) "0dlcjrw96x72grg6j915070x8x98l7629pn86gf148iknflm7gd5"))))
(properties `((upstream-name . "shinyFiles"))) (properties `((upstream-name . "shinyFiles")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs

View File

@ -127,10 +127,9 @@
;;; ;;;
;;; Code: ;;; Code:
(define (bootable-kernel-arguments kernel-arguments system.drv root-device) (define (bootable-kernel-arguments system root-device)
"Prepend extra arguments to KERNEL-ARGUMENTS that allow SYSTEM.DRV to be "Return a list of kernel arguments (gexps) to boot SYSTEM from ROOT-DEVICE."
booted from ROOT-DEVICE" (list (string-append "--root="
(cons* (string-append "--root="
(cond ((uuid? root-device) (cond ((uuid? root-device)
;; Note: Always use the DCE format because that's ;; Note: Always use the DCE format because that's
@ -141,9 +140,8 @@ booted from ROOT-DEVICE"
((file-system-label? root-device) ((file-system-label? root-device)
(file-system-label->string root-device)) (file-system-label->string root-device))
(else root-device))) (else root-device)))
#~(string-append "--system=" #$system.drv) #~(string-append "--system=" #$system)
#~(string-append "--load=" #$system.drv "/boot") #~(string-append "--load=" #$system "/boot")))
kernel-arguments))
;; System-wide configuration. ;; System-wide configuration.
;; TODO: Add per-field docstrings/stexi. ;; TODO: Add per-field docstrings/stexi.
@ -156,7 +154,7 @@ booted from ROOT-DEVICE"
(default '())) ; list of gexps/strings (default '())) ; list of gexps/strings
(bootloader operating-system-bootloader) ; <bootloader-configuration> (bootloader operating-system-bootloader) ; <bootloader-configuration>
(initrd operating-system-initrd ; (list fs) -> M derivation (initrd operating-system-initrd ; (list fs) -> file-like
(default base-initrd)) (default base-initrd))
(initrd-modules operating-system-initrd-modules ; list of strings (initrd-modules operating-system-initrd-modules ; list of strings
(thunked) ; it's system-dependent (thunked) ; it's system-dependent
@ -209,12 +207,11 @@ booted from ROOT-DEVICE"
(sudoers-file operating-system-sudoers-file ; file-like (sudoers-file operating-system-sudoers-file ; file-like
(default %sudoers-specification))) (default %sudoers-specification)))
(define (operating-system-kernel-arguments os system.drv root-device) (define (operating-system-kernel-arguments os root-device)
"Return all the kernel arguments, including the ones not specified "Return all the kernel arguments, including the ones not specified
directly by the user." directly by the user."
(bootable-kernel-arguments (operating-system-user-kernel-arguments os) (append (bootable-kernel-arguments os root-device)
system.drv (operating-system-user-kernel-arguments os)))
root-device))
;;; ;;;
@ -328,14 +325,11 @@ format is unrecognized.
The object has its kernel-arguments extended in order to make it bootable." The object has its kernel-arguments extended in order to make it bootable."
(let* ((file (string-append system "/parameters")) (let* ((file (string-append system "/parameters"))
(params (call-with-input-file file read-boot-parameters)) (params (call-with-input-file file read-boot-parameters))
(root (boot-parameters-root-device params)) (root (boot-parameters-root-device params)))
(kernel-arguments (boot-parameters-kernel-arguments params)))
(if params
(boot-parameters (boot-parameters
(inherit params) (inherit params)
(kernel-arguments (bootable-kernel-arguments kernel-arguments (kernel-arguments (append (bootable-kernel-arguments system root)
system root))) (boot-parameters-kernel-arguments params))))))
#f)))
(define (boot-parameters->menu-entry conf) (define (boot-parameters->menu-entry conf)
(menu-entry (menu-entry
@ -448,7 +442,7 @@ value of the SYSTEM-SERVICE-TYPE service."
(return `(("locale" ,locale))) (return `(("locale" ,locale)))
(mlet %store-monad (mlet %store-monad
((kernel -> (operating-system-kernel os)) ((kernel -> (operating-system-kernel os))
(initrd (operating-system-initrd-file os)) (initrd -> (operating-system-initrd-file os))
(params (operating-system-boot-parameters-file os))) (params (operating-system-boot-parameters-file os)))
(return `(("kernel" ,kernel) (return `(("kernel" ,kernel)
("parameters" ,params) ("parameters" ,params)
@ -876,12 +870,12 @@ hardware-related operations as necessary when booting a Linux container."
(define make-initrd (define make-initrd
(operating-system-initrd os)) (operating-system-initrd os))
(mlet %store-monad ((initrd (make-initrd boot-file-systems (let ((initrd (make-initrd boot-file-systems
#:linux (operating-system-kernel os) #:linux (operating-system-kernel os)
#:linux-modules #:linux-modules
(operating-system-initrd-modules os) (operating-system-initrd-modules os)
#:mapped-devices mapped-devices))) #:mapped-devices mapped-devices)))
(return (file-append initrd "/initrd")))) (file-append initrd "/initrd")))
(define (locale-name->definition* name) (define (locale-name->definition* name)
"Variant of 'locale-name->definition' that raises an error upon failure." "Variant of 'locale-name->definition' that raises an error upon failure."
@ -939,42 +933,45 @@ listed in OS. The C library expects to find it under
(store-file-system (operating-system-file-systems os))) (store-file-system (operating-system-file-systems os)))
(define* (operating-system-bootcfg os #:optional (old-entries '())) (define* (operating-system-bootcfg os #:optional (old-entries '()))
"Return the bootloader configuration file for OS. Use OLD-ENTRIES "Return the bootloader configuration file for OS. Use OLD-ENTRIES,
(which is a list of <menu-entry>) to populate the \"old entries\" menu." a list of <menu-entry>, to populate the \"old entries\" menu."
(mlet* %store-monad (let* ((root-fs (operating-system-root-file-system os))
((system (operating-system-derivation os)) (root-device (file-system-device root-fs))
(root-fs -> (operating-system-root-file-system os)) (params (operating-system-boot-parameters
(root-device -> (file-system-device root-fs)) os root-device
(params (operating-system-boot-parameters os system root-device)) #:system-kernel-arguments? #t))
(entry -> (boot-parameters->menu-entry params)) (entry (boot-parameters->menu-entry params))
(bootloader-conf -> (operating-system-bootloader os))) (bootloader-conf (operating-system-bootloader os)))
((bootloader-configuration-file-generator (define generate-config-file
(bootloader-configuration-bootloader bootloader-conf)) (bootloader-configuration-file-generator
bootloader-conf (list entry) #:old-entries old-entries))) (bootloader-configuration-bootloader bootloader-conf)))
(define (operating-system-boot-parameters os system.drv root-device) (generate-config-file bootloader-conf (list entry)
"Return a monadic <boot-parameters> record that describes the boot parameters #:old-entries old-entries)))
of OS. SYSTEM.DRV is either a derivation or #f. If it's a derivation, adds
kernel arguments for that derivation to <boot-parameters>." (define* (operating-system-boot-parameters os root-device
(mlet* %store-monad #:key system-kernel-arguments?)
((initrd (operating-system-initrd-file os)) "Return a monadic <boot-parameters> record that describes the boot
(store -> (operating-system-store-file-system os)) parameters of OS. When SYSTEM-KERNEL-ARGUMENTS? is true, add kernel arguments
(bootloader -> (bootloader-configuration-bootloader such as '--root' and '--load' to <boot-parameters>."
(let* ((initrd (operating-system-initrd-file os))
(store (operating-system-store-file-system os))
(bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))) (operating-system-bootloader os)))
(bootloader-name -> (bootloader-name bootloader)) (bootloader-name (bootloader-name bootloader))
(label -> (kernel->boot-label (operating-system-kernel os)))) (label (kernel->boot-label (operating-system-kernel os))))
(return (boot-parameters (boot-parameters
(label label) (label label)
(root-device root-device) (root-device root-device)
(kernel (operating-system-kernel-file os)) (kernel (operating-system-kernel-file os))
(kernel-arguments (kernel-arguments
(if system.drv (if system-kernel-arguments?
(operating-system-kernel-arguments os system.drv root-device) (operating-system-kernel-arguments os root-device)
(operating-system-user-kernel-arguments os))) (operating-system-user-kernel-arguments os)))
(initrd initrd) (initrd initrd)
(bootloader-name bootloader-name) (bootloader-name bootloader-name)
(store-device (ensure-not-/dev (file-system-device store))) (store-device (ensure-not-/dev (file-system-device store)))
(store-mount-point (file-system-mount-point store)))))) (store-mount-point (file-system-mount-point store)))))
(define (device->sexp device) (define (device->sexp device)
"Serialize DEVICE as an sexp (really, as an object with a read syntax.)" "Serialize DEVICE as an sexp (really, as an object with a read syntax.)"
@ -986,19 +983,22 @@ kernel arguments for that derivation to <boot-parameters>."
(_ (_
device))) device)))
(define* (operating-system-boot-parameters-file os #:optional (system.drv #f)) (define* (operating-system-boot-parameters-file os
#:key system-kernel-arguments?)
"Return a file that describes the boot parameters of OS. The primary use of "Return a file that describes the boot parameters of OS. The primary use of
this file is the reconstruction of GRUB menu entries for old configurations. this file is the reconstruction of GRUB menu entries for old configurations.
SYSTEM.DRV is optional. If given, adds kernel arguments for that system to the
returned file (since the returned file is then usually stored into the When SYSTEM-KERNEL-ARGUMENTS? is true, add kernel arguments such as '--root'
content-addressed \"system\" directory, it's usually not a good idea and '--load' to the returned file (since the returned file is then usually
to give it because the content hash would change by the content hash stored into the content-addressed \"system\" directory, it's usually not a
good idea to give it because the content hash would change by the content hash
being stored into the \"parameters\" file)." being stored into the \"parameters\" file)."
(mlet* %store-monad ((root -> (operating-system-root-file-system os)) (let* ((root (operating-system-root-file-system os))
(device -> (file-system-device root)) (device (file-system-device root))
(params (operating-system-boot-parameters os (params (operating-system-boot-parameters
system.drv os device
device))) #:system-kernel-arguments?
system-kernel-arguments?)))
(gexp->file "parameters" (gexp->file "parameters"
#~(boot-parameters #~(boot-parameters
(version 0) (version 0)

View File

@ -20,8 +20,6 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu system linux-initrd) (define-module (gnu system linux-initrd)
#:use-module (guix monads)
#:use-module (guix store)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module ((guix store) #:use-module ((guix store)
@ -63,7 +61,7 @@
(gzip gzip) (gzip gzip)
(name "guile-initrd") (name "guile-initrd")
(system (%current-system))) (system (%current-system)))
"Return a derivation that builds a Linux initrd (a gzipped cpio archive) "Return as a file-like object a Linux initrd (a gzipped cpio archive)
containing GUILE and that evaluates EXP, a G-expression, upon booting. All containing GUILE and that evaluates EXP, a G-expression, upon booting. All
the derivations referenced by EXP are automatically copied to the initrd." the derivations referenced by EXP are automatically copied to the initrd."
@ -100,8 +98,9 @@ the derivations referenced by EXP are automatically copied to the initrd."
#:references-graphs '("closure") #:references-graphs '("closure")
#:gzip (string-append #$gzip "/bin/gzip"))))) #:gzip (string-append #$gzip "/bin/gzip")))))
(gexp->derivation name builder (computed-file name builder
#:references-graphs `(("closure" ,init)))) #:options
`(#:references-graphs (("closure" ,init)))))
(define (flat-linux-module-directory linux modules) (define (flat-linux-module-directory linux modules)
"Return a flat directory containing the Linux kernel modules listed in "Return a flat directory containing the Linux kernel modules listed in
@ -143,7 +142,7 @@ MODULES and taken from LINUX."
qemu-networking? qemu-networking?
volatile-root? volatile-root?
(on-error 'debug)) (on-error 'debug))
"Return a monadic derivation that builds a raw initrd, with kernel "Return as a file-like object a raw initrd, with kernel
modules taken from LINUX. FILE-SYSTEMS is a list of file-systems to be modules taken from LINUX. FILE-SYSTEMS is a list of file-systems to be
mounted by the initrd, possibly in addition to the root file system specified mounted by the initrd, possibly in addition to the root file system specified
on the kernel command line via '--root'. LINUX-MODULES is a list of kernel on the kernel command line via '--root'. LINUX-MODULES is a list of kernel
@ -294,7 +293,7 @@ FILE-SYSTEMS."
volatile-root? volatile-root?
(extra-modules '()) ;deprecated (extra-modules '()) ;deprecated
(on-error 'debug)) (on-error 'debug))
"Return a monadic derivation that builds a generic initrd, with kernel "Return as a file-like object a generic initrd, with kernel
modules taken from LINUX. FILE-SYSTEMS is a list of file-systems to be modules taken from LINUX. FILE-SYSTEMS is a list of file-systems to be
mounted by the initrd, possibly in addition to the root file system specified mounted by the initrd, possibly in addition to the root file system specified
on the kernel command line via '--root'. MAPPED-DEVICES is a list of device on the kernel command line via '--root'. MAPPED-DEVICES is a list of device

View File

@ -189,9 +189,7 @@ made available under the /xchg CIFS share."
#~(when (zero? (system* #$user-builder)) #~(when (zero? (system* #$user-builder))
(reboot)))) (reboot))))
(mlet* %store-monad (let ((initrd (or initrd
((initrd (if initrd ; use the default initrd?
(return initrd)
(base-initrd file-systems (base-initrd file-systems
#:on-error 'backtrace #:on-error 'backtrace
#:linux linux #:linux linux
@ -254,7 +252,7 @@ made available under the /xchg CIFS share."
file-system-uuid file-system-uuid
(system (%current-system)) (system (%current-system))
(qemu qemu-minimal) (qemu qemu-minimal)
os-drv os
bootcfg-drv bootcfg-drv
bootloader bootloader
register-closures? register-closures?
@ -302,7 +300,7 @@ INPUTS is a list of inputs (as for packages)."
(set-path-environment-variable "PATH" '("bin" "sbin") inputs) (set-path-environment-variable "PATH" '("bin" "sbin") inputs)
(make-iso9660-image #$(bootloader-package bootloader) (make-iso9660-image #$(bootloader-package bootloader)
#$bootcfg-drv #$bootcfg-drv
#$os-drv #$os
"/xchg/guixsd.iso" "/xchg/guixsd.iso"
#:register-closures? #$register-closures? #:register-closures? #$register-closures?
#:closures graphs #:closures graphs
@ -331,7 +329,7 @@ INPUTS is a list of inputs (as for packages)."
(file-system-type "ext4") (file-system-type "ext4")
file-system-label file-system-label
file-system-uuid file-system-uuid
os-drv os
bootcfg-drv bootcfg-drv
bootloader bootloader
(register-closures? #t) (register-closures? #t)
@ -397,7 +395,7 @@ the image."
#:closures graphs #:closures graphs
#:copy-closures? #$copy-inputs? #:copy-closures? #$copy-inputs?
#:register-closures? #$register-closures? #:register-closures? #$register-closures?
#:system-directory #$os-drv #:system-directory #$os
;; Disable deduplication to speed things up, ;; Disable deduplication to speed things up,
;; and because it doesn't help much for a ;; and because it doesn't help much for a
@ -627,7 +625,7 @@ to USB sticks meant to be read-only."
(string=? (file-system-mount-point fs) "/")) (string=? (file-system-mount-point fs) "/"))
(operating-system-file-systems os))) (operating-system-file-systems os)))
(let ((os (operating-system (inherit os) (let* ((os (operating-system (inherit os)
;; Since this is meant to be used on real hardware, don't ;; Since this is meant to be used on real hardware, don't
;; install QEMU networking or anything like that. Assume USB ;; install QEMU networking or anything like that. Assume USB
;; mass storage devices (usb-storage.ko) are available. ;; mass storage devices (usb-storage.ko) are available.
@ -648,23 +646,21 @@ to USB sticks meant to be read-only."
(mount-point "/") (mount-point "/")
(device root-uuid) (device root-uuid)
(type file-system-type)) (type file-system-type))
file-systems-to-keep))))) file-systems-to-keep))))
(mlet* %store-monad ((os-drv (operating-system-derivation os))
(bootcfg (operating-system-bootcfg os))) (bootcfg (operating-system-bootcfg os)))
(if (string=? "iso9660" file-system-type) (if (string=? "iso9660" file-system-type)
(iso9660-image #:name name (iso9660-image #:name name
#:file-system-label root-label #:file-system-label root-label
#:file-system-uuid root-uuid #:file-system-uuid root-uuid
#:os-drv os-drv #:os os
#:register-closures? #t #:register-closures? #t
#:bootcfg-drv bootcfg #:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader #:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os)) (operating-system-bootloader os))
#:inputs `(("system" ,os-drv) #:inputs `(("system" ,os)
("bootcfg" ,bootcfg))) ("bootcfg" ,bootcfg)))
(qemu-image #:name name (qemu-image #:name name
#:os-drv os-drv #:os os
#:bootcfg-drv bootcfg #:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader #:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os)) (operating-system-bootloader os))
@ -675,8 +671,8 @@ to USB sticks meant to be read-only."
#:file-system-uuid root-uuid #:file-system-uuid root-uuid
#:copy-inputs? #t #:copy-inputs? #t
#:register-closures? #t #:register-closures? #t
#:inputs `(("system" ,os-drv) #:inputs `(("system" ,os)
("bootcfg" ,bootcfg))))))) ("bootcfg" ,bootcfg))))))
(define* (system-qemu-image os (define* (system-qemu-image os
#:key #:key
@ -702,7 +698,7 @@ of the GNU system as described by OS."
'dce))) 'dce)))
(let ((os (operating-system (inherit os) (let* ((os (operating-system (inherit os)
;; Assume we have an initrd with the whole QEMU shebang. ;; Assume we have an initrd with the whole QEMU shebang.
;; Force our own root file system. Refer to it by UUID so that ;; Force our own root file system. Refer to it by UUID so that
@ -712,20 +708,18 @@ of the GNU system as described by OS."
(mount-point "/") (mount-point "/")
(device root-uuid) (device root-uuid)
(type file-system-type)) (type file-system-type))
file-systems-to-keep))))) file-systems-to-keep))))
(mlet* %store-monad
((os-drv (operating-system-derivation os))
(bootcfg (operating-system-bootcfg os))) (bootcfg (operating-system-bootcfg os)))
(qemu-image #:os-drv os-drv (qemu-image #:os os
#:bootcfg-drv bootcfg #:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader #:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os)) (operating-system-bootloader os))
#:disk-image-size disk-image-size #:disk-image-size disk-image-size
#:file-system-type file-system-type #:file-system-type file-system-type
#:file-system-uuid root-uuid #:file-system-uuid root-uuid
#:inputs `(("system" ,os-drv) #:inputs `(("system" ,os)
("bootcfg" ,bootcfg)) ("bootcfg" ,bootcfg))
#:copy-inputs? #t)))) #:copy-inputs? #t)))
;;; ;;;
@ -829,13 +823,14 @@ bootloader refers to: OS kernel, initrd, bootloader data, etc."
;; Use a fixed UUID to improve determinism. ;; Use a fixed UUID to improve determinism.
(operating-system-uuid os 'dce)) (operating-system-uuid os 'dce))
(mlet* %store-monad ((os-drv (operating-system-derivation os)) (define bootcfg
(bootcfg (operating-system-bootcfg os))) (operating-system-bootcfg os))
;; XXX: When FULL-BOOT? is true, we end up creating an image that contains ;; XXX: When FULL-BOOT? is true, we end up creating an image that contains
;; BOOTCFG and all its dependencies, including the output of OS-DRV. ;; BOOTCFG and all its dependencies, including the output of OS.
;; This is more than needed (we only need the kernel, initrd, GRUB for its ;; This is more than needed (we only need the kernel, initrd, GRUB for its
;; font, and the background image), but it's hard to filter that. ;; font, and the background image), but it's hard to filter that.
(qemu-image #:os-drv os-drv (qemu-image #:os os
#:bootcfg-drv bootcfg #:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader #:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os)) (operating-system-bootloader os))
@ -847,7 +842,7 @@ bootloader refers to: OS kernel, initrd, bootloader data, etc."
;; XXX: Passing #t here is too slow, so let it off by default. ;; XXX: Passing #t here is too slow, so let it off by default.
#:register-closures? #f #:register-closures? #f
#:copy-inputs? full-boot?))) #:copy-inputs? full-boot?))
(define* (common-qemu-options image shared-fs) (define* (common-qemu-options image shared-fs)
"Return the a string-value gexp with the common QEMU options to boot IMAGE, "Return the a string-value gexp with the common QEMU options to boot IMAGE,
@ -897,21 +892,20 @@ bootloader; otherwise it directly starts the operating system kernel. The
DISK-IMAGE-SIZE parameter specifies the size in bytes of the root disk image; DISK-IMAGE-SIZE parameter specifies the size in bytes of the root disk image;
it is mostly useful when FULL-BOOT? is true." it is mostly useful when FULL-BOOT? is true."
(mlet* %store-monad ((os -> (virtualized-operating-system os mappings full-boot?)) (mlet* %store-monad ((os -> (virtualized-operating-system os mappings full-boot?))
(os-drv (operating-system-derivation os))
(image (system-qemu-image/shared-store (image (system-qemu-image/shared-store
os os
#:full-boot? full-boot? #:full-boot? full-boot?
#:disk-image-size disk-image-size))) #:disk-image-size disk-image-size)))
(define kernel-arguments (define kernel-arguments
#~(list #$@(if graphic? #~() #~("console=ttyS0")) #~(list #$@(if graphic? #~() #~("console=ttyS0"))
#+@(operating-system-kernel-arguments os os-drv "/dev/vda1"))) #+@(operating-system-kernel-arguments os "/dev/vda1")))
(define qemu-exec (define qemu-exec
#~(list (string-append #$qemu "/bin/" #$(qemu-command (%current-system))) #~(list (string-append #$qemu "/bin/" #$(qemu-command (%current-system)))
#$@(if full-boot? #$@(if full-boot?
#~() #~()
#~("-kernel" #$(operating-system-kernel-file os) #~("-kernel" #$(operating-system-kernel-file os)
"-initrd" #$(file-append os-drv "/initrd") "-initrd" #$(file-append os "/initrd")
(format #f "-append ~s" (format #f "-append ~s"
(string-join #$kernel-arguments " ")))) (string-join #$kernel-arguments " "))))
#$@(common-qemu-options image #$@(common-qemu-options image

View File

@ -154,10 +154,15 @@ info --version")
(#f (reverse result)) (#f (reverse result))
(x (loop (cons x result)))))) (x (loop (cons x result))))))
marionette))) marionette)))
(lset= string=? (lset= equal?
(map passwd:name users) (map (lambda (user)
(list (passwd:name user)
(passwd:dir user)))
users)
(list (list
#$@(map user-account-name #$@(map (lambda (account)
`(list ,(user-account-name account)
,(user-account-home-directory account)))
(operating-system-user-accounts os)))))) (operating-system-user-accounts os))))))
(test-assert "shepherd services" (test-assert "shepherd services"

View File

@ -0,0 +1,195 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build-system clojure)
#:use-module (guix build clojure-utils)
#:use-module (guix build-system)
#:use-module (guix build-system ant)
#:use-module ((guix build-system gnu)
#:select (standard-packages)
#:prefix gnu:)
#:use-module (guix derivations)
#:use-module (guix packages)
#:use-module ((guix search-paths)
#:select
((search-path-specification->sexp . search-path-spec->sexp)))
#:use-module (guix utils)
#:use-module (ice-9 match)
#:export (%clojure-build-system-modules
clojure-build
clojure-build-system))
;; Commentary:
;;
;; Standard build procedure for Clojure packages.
;;
;; Code:
(define-with-docs %clojure-build-system-modules
"Build-side modules imported and used by default."
`((guix build clojure-build-system)
(guix build clojure-utils)
(guix build guile-build-system)
,@%ant-build-system-modules))
(define-with-docs %default-clojure
"The default Clojure package."
(delay (@* (gnu packages lisp) clojure)))
(define-with-docs %default-jdk
"The default JDK package."
(delay (@* (gnu packages java) icedtea)))
(define-with-docs %default-zip
"The default ZIP package."
(delay (@* (gnu packages compression) zip)))
(define* (lower name
#:key
source target
inputs native-inputs
(clojure (force %default-clojure))
(jdk (force %default-jdk))
(zip (force %default-zip))
outputs system
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
(let ((private-keywords '(#:source #:target
#:inputs #:native-inputs
#:clojure #:jdk #:zip)))
(if target
(error "No cross-compilation for clojure-build-system yet: LOWER"
target) ; FIXME
(bag (name name)
(system system)
(host-inputs `(,@(if source
`(("source" ,source))
'())
,@inputs
,@(gnu:standard-packages)))
(build-inputs `(("clojure" ,clojure)
("jdk" ,jdk "jdk")
("zip" ,zip)
,@native-inputs))
(outputs outputs)
(build clojure-build)
(arguments (strip-keyword-arguments private-keywords
arguments))))))
(define-with-docs source->output-path
"Convert source input to output path."
(match-lambda
(((? derivation? source))
(derivation->output-path source))
((source)
source)
(source
source)))
(define-with-docs maybe-guile->guile
"Find the right guile."
(match-lambda
((and maybe-guile (? package?))
maybe-guile)
(#f ; default
(@* (gnu packages commencement) guile-final))))
(define* (clojure-build store name inputs
#:key
(source-dirs `',%source-dirs)
(test-dirs `',%test-dirs)
(compile-dir %compile-dir)
(jar-names `',(package-name->jar-names name))
(main-class %main-class)
(omit-source? %omit-source?)
(aot-include `',%aot-include)
(aot-exclude `',%aot-exclude)
doc-dirs ; no sensible default
(doc-regex %doc-regex)
(tests? %tests?)
(test-include `',%test-include)
(test-exclude `',%test-exclude)
(phases '(@ (guix build clojure-build-system)
%standard-phases))
(outputs '("out"))
(search-paths '())
(system (%current-system))
(guile #f)
(imported-modules %clojure-build-system-modules)
(modules %clojure-build-system-modules))
"Build SOURCE with INPUTS."
(let ((builder `(begin
(use-modules ,@modules)
(clojure-build #:name ,name
#:source ,(source->output-path
(assoc-ref inputs "source"))
#:source-dirs ,source-dirs
#:test-dirs ,test-dirs
#:compile-dir ,compile-dir
#:jar-names ,jar-names
#:main-class ,main-class
#:omit-source? ,omit-source?
#:aot-include ,aot-include
#:aot-exclude ,aot-exclude
#:doc-dirs ,doc-dirs
#:doc-regex ,doc-regex
#:tests? ,tests?
#:test-include ,test-include
#:test-exclude ,test-exclude
#:phases ,phases
#:outputs %outputs
#:search-paths ',(map search-path-spec->sexp
search-paths)
#:system ,system
#:inputs %build-inputs)))
(guile-for-build (package-derivation store
(maybe-guile->guile guile)
system
#:graft? #f)))
(build-expression->derivation store name builder
#:inputs inputs
#:system system
#:modules imported-modules
#:outputs outputs
#:guile-for-build guile-for-build)))
(define clojure-build-system
(build-system
(name 'clojure)
(description "Simple Clojure build system using plain old 'compile'")
(lower lower)))
;;; clojure.scm ends here

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -28,7 +28,9 @@
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:export (%ocaml-build-system-modules #:export (%ocaml-build-system-modules
package-with-ocaml4.01 package-with-ocaml4.01
package-with-ocaml4.02
strip-ocaml4.01-variant strip-ocaml4.01-variant
strip-ocaml4.02-variant
ocaml-build ocaml-build
ocaml-build-system)) ocaml-build-system))
@ -82,6 +84,14 @@
(let ((module (resolve-interface '(gnu packages ocaml)))) (let ((module (resolve-interface '(gnu packages ocaml))))
(module-ref module 'ocaml4.01-findlib))) (module-ref module 'ocaml4.01-findlib)))
(define (default-ocaml4.02)
(let ((ocaml (resolve-interface '(gnu packages ocaml))))
(module-ref ocaml 'ocaml-4.02)))
(define (default-ocaml4.02-findlib)
(let ((module (resolve-interface '(gnu packages ocaml))))
(module-ref module 'ocaml4.02-findlib)))
(define* (package-with-explicit-ocaml ocaml findlib old-prefix new-prefix (define* (package-with-explicit-ocaml ocaml findlib old-prefix new-prefix
#:key variant-property) #:key variant-property)
"Return a procedure of one argument, P. The procedure creates a package "Return a procedure of one argument, P. The procedure creates a package
@ -139,12 +149,24 @@ pre-defined variants."
"ocaml-" "ocaml4.01-" "ocaml-" "ocaml4.01-"
#:variant-property 'ocaml4.01-variant)) #:variant-property 'ocaml4.01-variant))
(define package-with-ocaml4.02
(package-with-explicit-ocaml (delay (default-ocaml4.02))
(delay (default-ocaml4.02-findlib))
"ocaml-" "ocaml4.02-"
#:variant-property 'ocaml4.02-variant))
(define (strip-ocaml4.01-variant p) (define (strip-ocaml4.01-variant p)
"Remove the 'ocaml4.01-variant' property from P." "Remove the 'ocaml4.01-variant' property from P."
(package (package
(inherit p) (inherit p)
(properties (alist-delete 'ocaml4.01-variant (package-properties p))))) (properties (alist-delete 'ocaml4.01-variant (package-properties p)))))
(define (strip-ocaml4.02-variant p)
"Remove the 'ocaml4.02-variant' property from P."
(package
(inherit p)
(properties (alist-delete 'ocaml4.02-variant (package-properties p)))))
(define* (lower name (define* (lower name
#:key source inputs native-inputs outputs system target #:key source inputs native-inputs outputs system target
(ocaml (default-ocaml)) (ocaml (default-ocaml))

View File

@ -0,0 +1,110 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build clojure-build-system)
#:use-module ((guix build ant-build-system)
#:select ((%standard-phases . %standard-phases@ant)
ant-build))
#:use-module (guix build clojure-utils)
#:use-module (guix build java-utils)
#:use-module (guix build utils)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
clojure-build))
;; Commentary:
;;
;; Builder-side code of the standard build procedure for Clojure packages.
;;
;; Code:
(define* (build #:key
source-dirs compile-dir
jar-names main-class omit-source?
aot-include aot-exclude
#:allow-other-keys)
"Standard 'build' phase for clojure-build-system."
(let* ((libs (append-map find-clojure-libs source-dirs))
(libs* (include-list\exclude-list aot-include
aot-exclude
#:all-list libs)))
(mkdir-p compile-dir)
(eval-with-clojure `(run! compile ',libs*)
source-dirs)
(let ((source-dir-files-alist (map (lambda (dir)
(cons dir (find-files* dir)))
source-dirs))
;; workaround transitive compilation in Clojure
(classes (filter (lambda (class)
(any (cut compiled-from? class <>)
libs*))
(find-files* compile-dir))))
(for-each (cut create-jar <> (cons (cons compile-dir classes)
(if omit-source?
'()
source-dir-files-alist))
#:main-class main-class)
jar-names)
#t)))
(define* (check #:key
test-dirs
jar-names
tests? test-include test-exclude
#:allow-other-keys)
"Standard 'check' phase for clojure-build-system. Note that TEST-EXCLUDE has
priority over TEST-INCLUDE."
(if tests?
(let* ((libs (append-map find-clojure-libs test-dirs))
(libs* (include-list\exclude-list test-include
test-exclude
#:all-list libs)))
(for-each (lambda (jar)
(eval-with-clojure `(do (apply require
'(clojure.test ,@libs*))
(apply clojure.test/run-tests
',libs*))
(cons jar test-dirs)))
jar-names)))
#t)
(define-with-docs install
"Standard 'install' phase for clojure-build-system."
(install-jars "./"))
(define-with-docs %standard-phases
"Standard build phases for clojure-build-system."
(modify-phases %standard-phases@ant
(replace 'build build)
(replace 'check check)
(replace 'install install)
(add-after 'install-license-files 'install-doc install-doc)))
(define* (clojure-build #:key
inputs
(phases %standard-phases)
#:allow-other-keys
#:rest args)
"Build the given Clojure package, applying all of PHASES in order."
(apply ant-build
#:inputs inputs
#:phases phases
args))
;;; clojure-build-system.scm ends here

View File

@ -0,0 +1,265 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build clojure-utils)
#:use-module (guix build utils)
#:use-module (ice-9 ftw)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-8)
#:use-module (srfi srfi-26)
#:export (@*
@@*
define-with-docs
%doc-regex
install-doc
%source-dirs
%test-dirs
%compile-dir
package-name->jar-names
%main-class
%omit-source?
%aot-include
%aot-exclude
%tests?
%test-include
%test-exclude
%clojure-regex
canonicalize-relative-path
find-files*
file-sans-extension
relative-path->clojure-lib-string
find-clojure-libs
compiled-from?
include-list\exclude-list
eval-with-clojure
create-jar))
(define-syntax-rule (@* module name)
"Like (@ MODULE NAME), but resolves at run time."
(module-ref (resolve-interface 'module) 'name))
(define-syntax-rule (@@* module name)
"Like (@@ MODULE NAME), but resolves at run time."
(module-ref (resolve-module 'module) 'name))
(define-syntax-rule (define-with-docs name docs val)
"Create top-level variable named NAME with doc string DOCS and value VAL."
(begin (define name val)
(set-object-property! name 'documentation docs)))
(define-with-docs %doc-regex
"Default regex for matching the base name of top-level documentation files."
(format #f
"(~a)|(\\.(html|markdown|md|txt)$)"
(@@ (guix build guile-build-system)
%documentation-file-regexp)))
(define* (install-doc #:key
doc-dirs
(doc-regex %doc-regex)
outputs
#:allow-other-keys)
"Install the following to the default documentation directory:
1. Top-level files with base name matching DOC-REGEX.
2. All files (recursively) inside DOC-DIRS.
DOC-REGEX can be compiled or uncompiled."
(let* ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc"))
(name-ver (strip-store-file-name out))
(dest-dir (string-append (or doc out) "/share/doc/" name-ver "/"))
(doc-regex* (if (string? doc-regex)
(make-regexp doc-regex)
doc-regex)))
(for-each (cut install-file <> dest-dir)
(remove (compose file-exists?
(cut string-append dest-dir <>))
(scandir "./" (cut regexp-exec doc-regex* <>))))
(for-each (cut copy-recursively <> dest-dir)
doc-dirs)
#t))
(define-with-docs %source-dirs
"A default list of source directories."
'("src/"))
(define-with-docs %test-dirs
"A default list of test directories."
'("test/"))
(define-with-docs %compile-dir
"Default directory for holding class files."
"classes/")
(define (package-name->jar-names name)
"Given NAME, a package name like \"foo-0.9.1b\",
return the list of default jar names: (\"foo-0.9.1b.jar\" \"foo.jar\")."
(map (cut string-append <> ".jar")
(list name
(receive (base-name _)
(package-name->name+version name)
base-name))))
(define-with-docs %main-class
"Default name for main class. It should be a symbol or #f."
#f)
(define-with-docs %omit-source?
"Include source in jars by default."
#f)
(define-with-docs %aot-include
"A default list of symbols deciding what to compile. Note that the exclude
list has priority over the include list. The special keyword #:all represents
all libraries found under the source directories."
'(#:all))
(define-with-docs %aot-exclude
"A default list of symbols deciding what not to compile.
See the doc string of '%aot-include' for more details."
'())
(define-with-docs %tests?
"Enable tests by default."
#t)
(define-with-docs %test-include
"A default list of symbols deciding what tests to include. Note that the
exclude list has priority over the include list. The special keyword #:all
represents all tests found under the test directories."
'(#:all))
(define-with-docs %test-exclude
"A default list of symbols deciding what tests to exclude.
See the doc string of '%test-include' for more details."
'())
(define-with-docs %clojure-regex
"Default regex for matching the base name of clojure source files."
"\\.cljc?$")
(define-with-docs canonicalize-relative-path
"Like 'canonicalize-path', but for relative paths.
Canonicalizations requiring the path to exist are omitted."
(let ((remove.. (lambda (ls)
(fold-right (match-lambda*
(((and comp (not "..")) (".." comps ...))
comps)
((comp (comps ...))
(cons comp comps)))
'()
ls))))
(compose (match-lambda
(() ".")
(ls (string-join ls "/")))
remove..
(cut remove (cut member <> '("" ".")) <>)
(cut string-split <> #\/))))
(define (find-files* base-dir . args)
"Similar to 'find-files', but with BASE-DIR stripped and result
canonicalized."
(map canonicalize-relative-path
(with-directory-excursion base-dir
(apply find-files "./" args))))
;;; FIXME: should be moved to (guix build utils)
(define-with-docs file-sans-extension
"Strip extension from path, if any."
(@@ (guix build guile-build-system)
file-sans-extension))
(define (relative-path->clojure-lib-string path)
"Convert PATH to a clojure library string."
(string-map (match-lambda
(#\/ #\.)
(#\_ #\-)
(chr chr))
(file-sans-extension path)))
(define* (find-clojure-libs base-dir
#:key (clojure-regex %clojure-regex))
"Return the list of clojure libraries found under BASE-DIR.
CLOJURE-REGEX can be compiled or uncompiled."
(map (compose string->symbol
relative-path->clojure-lib-string)
(find-files* base-dir clojure-regex)))
(define (compiled-from? class lib)
"Given class file CLASS and clojure library symbol LIB, decide if CLASS
results from compiling LIB."
(string-prefix? (symbol->string lib)
(relative-path->clojure-lib-string class)))
(define* (include-list\exclude-list include-list exclude-list
#:key all-list)
"Given INCLUDE-LIST and EXCLUDE-LIST, replace all occurences of #:all by
slicing ALL-LIST into them and compute their list difference."
(define (replace-#:all ls all-ls)
(append-map (match-lambda
(#:all all-ls)
(x (list x)))
ls))
(let ((include-list* (replace-#:all include-list all-list))
(exclude-list* (replace-#:all exclude-list all-list)))
(lset-difference equal? include-list* exclude-list*)))
(define (eval-with-clojure expr extra-paths)
"Evaluate EXPR with clojure.
EXPR must be a s-expression writable by guile and readable by clojure.
For examples, '(require '[clojure.string]) will not work,
because the guile writer converts brackets to parentheses.
EXTRA-PATHS is a list of paths which will be appended to $CLASSPATH."
(let* ((classpath (getenv "CLASSPATH"))
(classpath* (string-join (cons classpath extra-paths) ":")))
(invoke "java"
"-classpath" classpath*
"clojure.main"
"--eval" (object->string expr))))
(define* (create-jar output-jar dir-files-alist
#:key
(verbose? #t)
(compress? #f)
(main-class %main-class))
"Given DIR-FILES-ALIST, an alist of the form: ((DIR . FILES) ...)
Create jar named OUTPUT-JAR from FILES with DIR stripped."
(let ((grouped-options (string-append "c"
(if verbose? "v" "")
"f"
(if compress? "" "0")
(if main-class "e" ""))))
(apply invoke `("jar"
,grouped-options
,output-jar
,@(if main-class (list (symbol->string main-class)) '())
,@(append-map (match-lambda
((dir . files)
(append-map (lambda (file)
`("-C" ,dir ,file))
files)))
dir-files-alist)))))

View File

@ -49,37 +49,40 @@
'()) '())
,@configure-flags))) ,@configure-flags)))
(format #t "running 'setup.ml' with arguments ~s~%" args) (format #t "running 'setup.ml' with arguments ~s~%" args)
(zero? (apply system* "ocaml" "setup.ml" args))) (apply invoke "ocaml" "setup.ml" args))
(let ((args `("-prefix" ,out ,@configure-flags))) (let ((args `("-prefix" ,out ,@configure-flags)))
(format #t "running 'configure' with arguments ~s~%" args) (format #t "running 'configure' with arguments ~s~%" args)
(zero? (apply system* "./configure" args)))))) (apply invoke "./configure" args))))
#t)
(define* (build #:key inputs outputs (build-flags '()) (make-flags '()) (define* (build #:key inputs outputs (build-flags '()) (make-flags '())
(use-make? #f) #:allow-other-keys) (use-make? #f) #:allow-other-keys)
"Build the given package." "Build the given package."
(if (and (file-exists? "setup.ml") (not use-make?)) (if (and (file-exists? "setup.ml") (not use-make?))
(zero? (apply system* "ocaml" "setup.ml" "-build" build-flags)) (apply invoke "ocaml" "setup.ml" "-build" build-flags)
(if (file-exists? "Makefile") (if (file-exists? "Makefile")
(zero? (apply system* "make" make-flags)) (apply invoke "make" make-flags)
(let ((file (if (file-exists? "pkg/pkg.ml") "pkg/pkg.ml" "pkg/build.ml"))) (let ((file (if (file-exists? "pkg/pkg.ml") "pkg/pkg.ml" "pkg/build.ml")))
(zero? (apply system* "ocaml" "-I" (apply invoke "ocaml" "-I"
(string-append (assoc-ref inputs "findlib") (string-append (assoc-ref inputs "findlib")
"/lib/ocaml/site-lib") "/lib/ocaml/site-lib")
file build-flags)))))) file build-flags))))
#t)
(define* (check #:key inputs outputs (make-flags '()) (test-target "test") tests? (define* (check #:key inputs outputs (make-flags '()) (test-target "test") tests?
(use-make? #f) #:allow-other-keys) (use-make? #f) #:allow-other-keys)
"Install the given package." "Install the given package."
(when tests? (when tests?
(if (and (file-exists? "setup.ml") (not use-make?)) (if (and (file-exists? "setup.ml") (not use-make?))
(zero? (system* "ocaml" "setup.ml" (string-append "-" test-target))) (invoke "ocaml" "setup.ml" (string-append "-" test-target))
(if (file-exists? "Makefile") (if (file-exists? "Makefile")
(zero? (apply system* "make" test-target make-flags)) (apply invoke "make" test-target make-flags)
(let ((file (if (file-exists? "pkg/pkg.ml") "pkg/pkg.ml" "pkg/build.ml"))) (let ((file (if (file-exists? "pkg/pkg.ml") "pkg/pkg.ml" "pkg/build.ml")))
(zero? (system* "ocaml" "-I" (invoke "ocaml" "-I"
(string-append (assoc-ref inputs "findlib") (string-append (assoc-ref inputs "findlib")
"/lib/ocaml/site-lib") "/lib/ocaml/site-lib")
file test-target))))))) file test-target)))))
#t)
(define* (install #:key outputs (build-flags '()) (make-flags '()) (use-make? #f) (define* (install #:key outputs (build-flags '()) (make-flags '()) (use-make? #f)
(install-target "install") (install-target "install")
@ -87,17 +90,19 @@
"Install the given package." "Install the given package."
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
(if (and (file-exists? "setup.ml") (not use-make?)) (if (and (file-exists? "setup.ml") (not use-make?))
(zero? (apply system* "ocaml" "setup.ml" (apply invoke "ocaml" "setup.ml"
(string-append "-" install-target) build-flags)) (string-append "-" install-target) build-flags)
(if (file-exists? "Makefile") (if (file-exists? "Makefile")
(zero? (apply system* "make" install-target make-flags)) (apply invoke "make" install-target make-flags)
(zero? (system* "opam-installer" "-i" (string-append "--prefix=" out) (invoke "opam-installer" "-i" (string-append "--prefix=" out)
(string-append "--libdir=" out "/lib/ocaml/site-lib"))))))) (string-append "--libdir=" out "/lib/ocaml/site-lib")))))
#t)
(define* (prepare-install #:key outputs #:allow-other-keys) (define* (prepare-install #:key outputs #:allow-other-keys)
"Prepare for building the given package." "Prepare for building the given package."
(mkdir-p (string-append (assoc-ref outputs "out") "/lib/ocaml/site-lib")) (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ocaml/site-lib"))
(mkdir-p (string-append (assoc-ref outputs "out") "/bin"))) (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
#t)
(define %standard-phases (define %standard-phases
;; Everything is as with the GNU Build System except for the `configure' ;; Everything is as with the GNU Build System except for the `configure'

View File

@ -372,19 +372,28 @@
;; List of content-addressed mirrors. Each mirror is represented as a ;; List of content-addressed mirrors. Each mirror is represented as a
;; procedure that takes a file name, an algorithm (symbol) and a hash ;; procedure that takes a file name, an algorithm (symbol) and a hash
;; (bytevector), and returns a URL or #f. ;; (bytevector), and returns a URL or #f.
;; Note: Avoid 'https' to mitigate <http://bugs.gnu.org/22774>. '(begin
;; TODO: Add more. (use-modules (guix base32) (guix base16))
'(list (lambda (file algo hash)
(list (lambda (file algo hash)
;; Files served by 'guix publish' are accessible under a single ;; Files served by 'guix publish' are accessible under a single
;; hash algorithm. ;; hash algorithm.
(string-append "http://mirror.hydra.gnu.org/file/" (string-append "https://mirror.hydra.gnu.org/file/"
file "/" (symbol->string algo) "/" file "/" (symbol->string algo) "/"
(bytevector->nix-base32-string hash))) (bytevector->nix-base32-string hash)))
(lambda (file algo hash) (lambda (file algo hash)
;; 'tarballs.nixos.org' supports several algorithms. ;; 'tarballs.nixos.org' supports several algorithms.
(string-append "http://tarballs.nixos.org/" (string-append "https://tarballs.nixos.org/"
(symbol->string algo) "/" (symbol->string algo) "/"
(bytevector->nix-base32-string hash))))) (bytevector->nix-base32-string hash)))
(lambda (file algo hash)
;; Software Heritage usually archives VCS history rather than
;; tarballs, but tarballs are sometimes available (and can be
;; explicitly stored there.) For example, see
;; <https://archive.softwareheritage.org/api/1/content/sha256:92d0fa1c311cacefa89853bdb53c62f4110cdfda3820346b59cbd098f40f955e/>.
(string-append "https://archive.softwareheritage.org/api/1/content/"
(symbol->string algo) ":"
(bytevector->base16-string hash) "/raw/")))))
(define %content-addressed-mirror-file (define %content-addressed-mirror-file
;; Content-addressed mirrors stored in a file. ;; Content-addressed mirrors stored in a file.

View File

@ -2,6 +2,7 @@
;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com> ;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -197,7 +198,7 @@ throughput."
(define elapsed (define elapsed
(duration->seconds (duration->seconds
(time-difference (current-time time-monotonic) start-time))) (time-difference (current-time time-monotonic) start-time)))
(if (number? size) (if (and (number? size) (not (zero? size)))
(let* ((% (* 100.0 (/ transferred size))) (let* ((% (* 100.0 (/ transferred size)))
(throughput (/ transferred elapsed)) (throughput (/ transferred elapsed))
(left (format #f " ~a ~a" file (left (format #f " ~a ~a" file
@ -211,6 +212,9 @@ throughput."
(current-terminal-columns)) (current-terminal-columns))
log-port) log-port)
(force-output log-port)) (force-output log-port))
;; If we don't know the total size, the last transfer will have a 0B
;; size. Don't display it.
(unless (zero? transferred)
(let* ((throughput (/ transferred elapsed)) (let* ((throughput (/ transferred elapsed))
(left (format #f " ~a" file)) (left (format #f " ~a" file))
(right (format #f "~a/s ~a | ~a transferred" (right (format #f "~a/s ~a | ~a transferred"
@ -221,7 +225,7 @@ throughput."
(display (string-pad-middle left right (display (string-pad-middle left right
(current-terminal-columns)) (current-terminal-columns))
log-port) log-port)
(force-output log-port)))) (force-output log-port)))))
(define %progress-interval (define %progress-interval
;; Default interval between subsequent outputs for rate-limited displays. ;; Default interval between subsequent outputs for rate-limited displays.

View File

@ -175,12 +175,16 @@ TARGET, and register them."
(return *unspecified*))) (return *unspecified*)))
(define* (install-bootloader installer-drv (define* (install-bootloader installer
#:key #:key
bootcfg bootcfg-file bootcfg bootcfg-file
target) target)
"Call INSTALLER-DRV with error handling, in %STORE-MONAD." "Run INSTALLER, a bootloader installation script, with error handling, in
(with-monad %store-monad %STORE-MONAD."
(mlet %store-monad ((installer-drv (if installer
(lower-object installer)
(return #f)))
(bootcfg (lower-object bootcfg)))
(let* ((gc-root (string-append target %gc-roots-directory (let* ((gc-root (string-append target %gc-roots-directory
"/bootcfg")) "/bootcfg"))
(temp-gc-root (string-append gc-root ".new")) (temp-gc-root (string-append gc-root ".new"))
@ -247,11 +251,11 @@ the ownership of '~a' may be incorrect!~%")
(format (lift format %store-monad)) (format (lift format %store-monad))
(populate (lift2 populate-root-file-system %store-monad))) (populate (lift2 populate-root-file-system %store-monad)))
(mlet %store-monad ((bootcfg (lower-object bootcfg)))
(mbegin %store-monad (mbegin %store-monad
;; Copy the closure of BOOTCFG, which includes OS-DIR, ;; Copy the closure of BOOTCFG, which includes OS-DIR,
;; eventual background image and so on. ;; eventual background image and so on.
(maybe-copy (maybe-copy (derivation->output-path bootcfg))
(derivation->output-path bootcfg))
;; Create a bunch of additional files. ;; Create a bunch of additional files.
(format log-port "populating '~a'...~%" target) (format log-port "populating '~a'...~%" target)
@ -261,7 +265,7 @@ the ownership of '~a' may be incorrect!~%")
(install-bootloader bootloader-installer (install-bootloader bootloader-installer
#:bootcfg bootcfg #:bootcfg bootcfg
#:bootcfg-file bootcfg-file #:bootcfg-file bootcfg-file
#:target target))))) #:target target))))))
;;; ;;;
@ -790,19 +794,18 @@ checking this by themselves in their 'check' procedure."
(warning (G_ "Consider running 'guix pull' before 'reconfigure'.~%")) (warning (G_ "Consider running 'guix pull' before 'reconfigure'.~%"))
(warning (G_ "Failing to do that may downgrade your system!~%")))) (warning (G_ "Failing to do that may downgrade your system!~%"))))
(define (bootloader-installer-derivation installer (define (bootloader-installer-script installer
bootloader device target) bootloader device target)
"Return a file calling INSTALLER gexp with given BOOTLOADER, DEVICE "Return a file calling INSTALLER gexp with given BOOTLOADER, DEVICE
and TARGET arguments." and TARGET arguments."
(with-monad %store-monad (scheme-file "bootloader-installer"
(gexp->file "bootloader-installer"
(with-imported-modules '((gnu build bootloader) (with-imported-modules '((gnu build bootloader)
(guix build utils)) (guix build utils))
#~(begin #~(begin
(use-modules (gnu build bootloader) (use-modules (gnu build bootloader)
(guix build utils) (guix build utils)
(ice-9 binary-ports)) (ice-9 binary-ports))
(#$installer #$bootloader #$device #$target)))))) (#$installer #$bootloader #$device #$target)))))
(define* (perform-action action os (define* (perform-action action os
#:key skip-safety-checks? #:key skip-safety-checks?
@ -830,6 +833,25 @@ static checks."
(define println (define println
(cut format #t "~a~%" <>)) (cut format #t "~a~%" <>))
(define menu-entries
(if (eq? 'init action)
'()
(map boot-parameters->menu-entry (profile-boot-parameters))))
(define bootloader
(bootloader-configuration-bootloader (operating-system-bootloader os)))
(define bootcfg
(and (not (eq? 'container action))
(operating-system-bootcfg os menu-entries)))
(define bootloader-script
(let ((installer (bootloader-installer bootloader))
(target (or target "/")))
(bootloader-installer-script installer
(bootloader-package bootloader)
bootloader-target target)))
(when (eq? action 'reconfigure) (when (eq? action 'reconfigure)
(maybe-suggest-running-guix-pull)) (maybe-suggest-running-guix-pull))
@ -849,39 +871,16 @@ static checks."
#:image-size image-size #:image-size image-size
#:full-boot? full-boot? #:full-boot? full-boot?
#:mappings mappings)) #:mappings mappings))
(bootloader -> (bootloader-configuration-bootloader
(operating-system-bootloader os)))
(bootloader-package
(let ((package (bootloader-package bootloader)))
(if package
(package->derivation package)
(return #f))))
(bootcfg (if (eq? 'container action)
(return #f)
(operating-system-bootcfg
os
(if (eq? 'init action)
'()
(map boot-parameters->menu-entry
(profile-boot-parameters))))))
(bootcfg-file -> (bootloader-configuration-file bootloader))
(bootloader-installer
(let ((installer (bootloader-installer bootloader))
(target (or target "/")))
(bootloader-installer-derivation installer
bootloader-package
bootloader-target target)))
;; For 'init' and 'reconfigure', always build BOOTCFG, even if ;; For 'init' and 'reconfigure', always build BOOTCFG, even if
;; --no-bootloader is passed, because we then use it as a GC root. ;; --no-bootloader is passed, because we then use it as a GC root.
;; See <http://bugs.gnu.org/21068>. ;; See <http://bugs.gnu.org/21068>.
(drvs -> (if (memq action '(init reconfigure)) (drvs (mapm %store-monad lower-object
(if (and install-bootloader? bootloader-package) (if (memq action '(init reconfigure))
(list sys bootcfg (if install-bootloader?
bootloader-package (list sys bootcfg bootloader-script)
bootloader-installer)
(list sys bootcfg)) (list sys bootcfg))
(list sys))) (list sys))))
(% (if derivations-only? (% (if derivations-only?
(return (for-each (compose println derivation-file-name) (return (for-each (compose println derivation-file-name)
drvs)) drvs))
@ -890,7 +889,7 @@ static checks."
(if (or dry-run? derivations-only?) (if (or dry-run? derivations-only?)
(return #f) (return #f)
(begin (let ((bootcfg-file (bootloader-configuration-file bootloader)))
(for-each (compose println derivation->output-path) (for-each (compose println derivation->output-path)
drvs) drvs)
@ -899,7 +898,7 @@ static checks."
(mbegin %store-monad (mbegin %store-monad
(switch-to-system os) (switch-to-system os)
(mwhen install-bootloader? (mwhen install-bootloader?
(install-bootloader bootloader-installer (install-bootloader bootloader-script
#:bootcfg bootcfg #:bootcfg bootcfg
#:bootcfg-file bootcfg-file #:bootcfg-file bootcfg-file
#:target "/")))) #:target "/"))))

View File

@ -1222,6 +1222,18 @@ static void checkSecrecy(const Path & path)
} }
static std::string runAuthenticationProgram(const Strings & args)
{
/* Use the 'authenticate' script from 'LIBEXECDIR/guix' or just
'LIBEXECDIR', depending on whether we're uninstalled or not. */
const bool installed = getenv("GUIX_UNINSTALLED") == NULL;
const string program = settings.nixLibexecDir
+ (installed ? "/guix" : "")
+ "/authenticate";
return runProgram(program, false, args);
}
void LocalStore::exportPath(const Path & path, bool sign, void LocalStore::exportPath(const Path & path, bool sign,
Sink & sink) Sink & sink)
{ {
@ -1276,7 +1288,8 @@ void LocalStore::exportPath(const Path & path, bool sign,
args.push_back(secretKey); args.push_back(secretKey);
args.push_back("-in"); args.push_back("-in");
args.push_back(hashFile); args.push_back(hashFile);
string signature = runProgram(OPENSSL_PATH, true, args);
string signature = runAuthenticationProgram(args);
writeString(signature, hashAndWriteSink); writeString(signature, hashAndWriteSink);
@ -1366,7 +1379,7 @@ Path LocalStore::importPath(bool requireSignature, Source & source)
args.push_back("-pubin"); args.push_back("-pubin");
args.push_back("-in"); args.push_back("-in");
args.push_back(sigFile); args.push_back(sigFile);
string hash2 = runProgram(OPENSSL_PATH, true, args); string hash2 = runAuthenticationProgram(args);
/* Note: runProgram() throws an exception if the signature /* Note: runProgram() throws an exception if the signature
is invalid. */ is invalid. */

View File

@ -113,7 +113,6 @@ libstore_a_CPPFLAGS = \
-DGUIX_CONFIGURATION_DIRECTORY=\"$(sysconfdir)/guix\" \ -DGUIX_CONFIGURATION_DIRECTORY=\"$(sysconfdir)/guix\" \
-DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \ -DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
-DNIX_BIN_DIR=\"$(bindir)\" \ -DNIX_BIN_DIR=\"$(bindir)\" \
-DOPENSSL_PATH="\"guix-authenticate\"" \
-DDEFAULT_CHROOT_DIRS="\"\"" -DDEFAULT_CHROOT_DIRS="\"\""
libstore_a_CXXFLAGS = $(AM_CXXFLAGS) \ libstore_a_CXXFLAGS = $(AM_CXXFLAGS) \
@ -168,10 +167,8 @@ nodist_pkglibexec_SCRIPTS += \
endif BUILD_DAEMON_OFFLOAD endif BUILD_DAEMON_OFFLOAD
nodist_pkglibexec_SCRIPTS += \
# XXX: It'd be better to hide it in $(pkglibexecdir). %D%/scripts/authenticate
nodist_libexec_SCRIPTS = \
%D%/scripts/guix-authenticate
# The '.service' files for systemd. # The '.service' files for systemd.
systemdservicedir = $(libdir)/systemd/system systemdservicedir = $(libdir)/systemd/system

View File

@ -466,18 +466,6 @@ main (int argc, char *argv[])
{ {
settings.processEnvironment (); settings.processEnvironment ();
/* Hackily help 'local-store.cc' find our 'guix-authenticate' program, which
is known as 'OPENSSL_PATH' here. */
std::string search_path;
search_path = settings.nixLibexecDir;
if (getenv ("PATH") != NULL)
{
search_path += ":";
search_path += getenv ("PATH");
}
setenv ("PATH", search_path.c_str (), 1);
/* Use our substituter by default. */ /* Use our substituter by default. */
settings.substituters.clear (); settings.substituters.clear ();
settings.set ("build-use-substitutes", "true"); settings.set ("build-use-substitutes", "true");