Merge branch 'master' into core-updates
This commit is contained in:
commit
4f70db97a0
|
@ -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 \
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.}:
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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,14 +113,14 @@ 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
|
||||||
(use-modules (gnu build svg))
|
(use-modules (gnu build svg))
|
||||||
(svg->png #+svg #$output
|
(svg->png #+svg #$output
|
||||||
#:width #$width
|
#:width #$width
|
||||||
#:height #$height))))))
|
#:height #$height))))))
|
||||||
|
|
||||||
(define* (grub-background-image config #:key (width 1024) (height 768))
|
(define* (grub-background-image config #:key (width 1024) (height 768))
|
||||||
"Return the GRUB background image defined in CONFIG with a ratio of
|
"Return the GRUB background image defined in CONFIG with a ratio of
|
||||||
|
@ -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,9 +184,11 @@ 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))
|
||||||
#~(format #$port "
|
|
||||||
|
(and image
|
||||||
|
#~(format #$port "
|
||||||
function setup_gfxterm {~a}
|
function setup_gfxterm {~a}
|
||||||
|
|
||||||
# Set 'root' to the partition that contains /gnu/store.
|
# Set 'root' to the partition that contains /gnu/store.
|
||||||
|
@ -213,14 +205,14 @@ else
|
||||||
set menu_color_normal=cyan/blue
|
set menu_color_normal=cyan/blue
|
||||||
set menu_color_highlight=white/blue
|
set menu_color_highlight=white/blue
|
||||||
fi~%"
|
fi~%"
|
||||||
#$setup-gfxterm-body
|
#$setup-gfxterm-body
|
||||||
#$(grub-root-search store-device font-file)
|
#$(grub-root-search store-device font-file)
|
||||||
#$(setup-gfxterm config font-file)
|
#$(setup-gfxterm config font-file)
|
||||||
#$(grub-setup-io config)
|
#$(grub-setup-io config)
|
||||||
|
|
||||||
#$(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,36 +323,36 @@ 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)
|
||||||
(format port
|
(format port
|
||||||
"# This file was generated from your GuixSD configuration. Any changes
|
"# This file was generated from your GuixSD configuration. Any changes
|
||||||
# will be lost upon reconfiguration.
|
# will be lost upon reconfiguration.
|
||||||
")
|
")
|
||||||
#$sugar
|
#$sugar
|
||||||
(format port "
|
(format port "
|
||||||
set default=~a
|
set default=~a
|
||||||
set timeout=~a~%"
|
set timeout=~a~%"
|
||||||
#$(bootloader-configuration-default-entry config)
|
#$(bootloader-configuration-default-entry config)
|
||||||
#$(bootloader-configuration-timeout config))
|
#$(bootloader-configuration-timeout config))
|
||||||
#$@(map menu-entry->gexp all-entries)
|
#$@(map menu-entry->gexp all-entries)
|
||||||
|
|
||||||
#$@(if (pair? old-entries)
|
#$@(if (pair? old-entries)
|
||||||
#~((format port "
|
#~((format port "
|
||||||
submenu \"GNU system, old configurations...\" {~%")
|
submenu \"GNU system, old configurations...\" {~%")
|
||||||
#$@(map menu-entry->gexp old-entries)
|
#$@(map menu-entry->gexp old-entries)
|
||||||
(format port "}~%"))
|
(format port "}~%"))
|
||||||
#~()))))
|
#~()))))
|
||||||
|
|
||||||
(gexp->derivation "grub.cfg" builder)))
|
(computed-file "grub.cfg" builder))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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]
|
|
@ -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")))))
|
||||||
|
|
|
@ -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))))
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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/")
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -5606,8 +5606,8 @@ 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
|
||||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 _
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
|
@ -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
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
@ -19,12 +31,12 @@ index 4a8ce17..d94a6d5 100644
|
||||||
PATH_TESTS=$(PATH_BASE)/tests
|
PATH_TESTS=$(PATH_BASE)/tests
|
||||||
-PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect
|
-PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect
|
||||||
+PATH_INSTALL=$(PREFIX)/lib/ocaml/bisect
|
+PATH_INSTALL=$(PREFIX)/lib/ocaml/bisect
|
||||||
|
|
||||||
|
|
||||||
# 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)")
|
||||||
|
@ -33,22 +45,22 @@ index 4a8ce17..d94a6d5 100644
|
||||||
MODULES_MLPACK=$(PROJECT_NAME).mlpack
|
MODULES_MLPACK=$(PROJECT_NAME).mlpack
|
||||||
MODULES_MLPACK_PP=$(PROJECT_NAME)_pp.mlpack
|
MODULES_MLPACK_PP=$(PROJECT_NAME)_pp.mlpack
|
||||||
@@ -80,11 +81,11 @@ veryclean: clean
|
@@ -80,11 +81,11 @@ veryclean: clean
|
||||||
rm -f $(PATH_OCAMLDOC)/*.html $(PATH_OCAMLDOC)/*.css
|
rm -f $(PATH_OCAMLDOC)/*.html $(PATH_OCAMLDOC)/*.css
|
||||||
|
|
||||||
install: FORCE
|
install: FORCE
|
||||||
- cp $(PATH_BUILD)/src/report/report.byte $(PATH_OCAML_PREFIX)/bin/bisect-report; \
|
- cp $(PATH_BUILD)/src/report/report.byte $(PATH_OCAML_PREFIX)/bin/bisect-report; \
|
||||||
+ cp $(PATH_BUILD)/src/report/report.byte $(PREFIX)/bin/bisect-report; \
|
+ cp $(PATH_BUILD)/src/report/report.byte $(PREFIX)/bin/bisect-report; \
|
||||||
if [ "$(PPX)" = "TRUE" ]; then \
|
if [ "$(PPX)" = "TRUE" ]; then \
|
||||||
- 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,47 +91,193 @@ 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
|
||||||
@@ -57,6 +63,9 @@ if [ "$no_camlp4" = "TRUE" -a "$ppx" = "FALSE" ]; then
|
@@ -57,6 +63,9 @@ if [ "$no_camlp4" = "TRUE" -a "$ppx" = "FALSE" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
+# prefix default value
|
+# prefix default value
|
||||||
+test -z $prefix && prefix=$ocaml_prefix
|
+test -z $prefix && prefix=$ocaml_prefix
|
||||||
+
|
+
|
||||||
# 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
|
||||||
|
|
||||||
|
|
|
@ -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);
|
|
@ -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
|
||||||
|
|
|
@ -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+)))
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
|
@ -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+))))
|
||||||
|
|
|
@ -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
|
||||||
|
|
162
gnu/system.scm
162
gnu/system.scm
|
@ -127,23 +127,21 @@
|
||||||
;;;
|
;;;
|
||||||
;;; 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
|
||||||
;; what (gnu build linux-boot) expects for the
|
;; what (gnu build linux-boot) expects for the
|
||||||
;; '--root' kernel command-line option.
|
;; '--root' kernel command-line option.
|
||||||
(uuid->string (uuid-bytevector root-device)
|
(uuid->string (uuid-bytevector root-device)
|
||||||
'dce))
|
'dce))
|
||||||
((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)))
|
(boot-parameters
|
||||||
(if params
|
(inherit params)
|
||||||
(boot-parameters
|
(kernel-arguments (append (bootable-kernel-arguments system root)
|
||||||
(inherit params)
|
(boot-parameters-kernel-arguments params))))))
|
||||||
(kernel-arguments (bootable-kernel-arguments kernel-arguments
|
|
||||||
system root)))
|
|
||||||
#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>."
|
||||||
(operating-system-bootloader os)))
|
(let* ((initrd (operating-system-initrd-file os))
|
||||||
(bootloader-name -> (bootloader-name bootloader))
|
(store (operating-system-store-file-system os))
|
||||||
(label -> (kernel->boot-label (operating-system-kernel os))))
|
(bootloader (bootloader-configuration-bootloader
|
||||||
(return (boot-parameters
|
(operating-system-bootloader os)))
|
||||||
(label label)
|
(bootloader-name (bootloader-name bootloader))
|
||||||
(root-device root-device)
|
(label (kernel->boot-label (operating-system-kernel os))))
|
||||||
(kernel (operating-system-kernel-file os))
|
(boot-parameters
|
||||||
(kernel-arguments
|
(label label)
|
||||||
(if system.drv
|
(root-device root-device)
|
||||||
(operating-system-kernel-arguments os system.drv root-device)
|
(kernel (operating-system-kernel-file os))
|
||||||
(operating-system-user-kernel-arguments os)))
|
(kernel-arguments
|
||||||
(initrd initrd)
|
(if system-kernel-arguments?
|
||||||
(bootloader-name bootloader-name)
|
(operating-system-kernel-arguments os root-device)
|
||||||
(store-device (ensure-not-/dev (file-system-device store)))
|
(operating-system-user-kernel-arguments os)))
|
||||||
(store-mount-point (file-system-mount-point store))))))
|
(initrd initrd)
|
||||||
|
(bootloader-name bootloader-name)
|
||||||
|
(store-device (ensure-not-/dev (file-system-device 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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -189,14 +189,12 @@ 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?
|
(base-initrd file-systems
|
||||||
(return initrd)
|
#:on-error 'backtrace
|
||||||
(base-initrd file-systems
|
#:linux linux
|
||||||
#:on-error 'backtrace
|
#:linux-modules %base-initrd-modules
|
||||||
#:linux linux
|
#:qemu-networking? #t))))
|
||||||
#:linux-modules %base-initrd-modules
|
|
||||||
#:qemu-networking? #t))))
|
|
||||||
|
|
||||||
(define builder
|
(define builder
|
||||||
;; Code that launches the VM that evaluates EXP.
|
;; Code that launches the VM that evaluates EXP.
|
||||||
|
@ -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,56 +625,54 @@ 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.
|
||||||
(initrd (lambda (file-systems . rest)
|
(initrd (lambda (file-systems . rest)
|
||||||
(apply (operating-system-initrd os)
|
(apply (operating-system-initrd os)
|
||||||
file-systems
|
file-systems
|
||||||
#:volatile-root? #t
|
#:volatile-root? #t
|
||||||
rest)))
|
rest)))
|
||||||
|
|
||||||
(bootloader (if (string=? "iso9660" file-system-type)
|
(bootloader (if (string=? "iso9660" file-system-type)
|
||||||
(bootloader-configuration
|
(bootloader-configuration
|
||||||
(inherit (operating-system-bootloader os))
|
(inherit (operating-system-bootloader os))
|
||||||
(bootloader grub-mkrescue-bootloader))
|
(bootloader grub-mkrescue-bootloader))
|
||||||
(operating-system-bootloader os)))
|
(operating-system-bootloader os)))
|
||||||
|
|
||||||
;; Force our own root file system.
|
;; Force our own root file system.
|
||||||
(file-systems (cons (file-system
|
(file-systems (cons (file-system
|
||||||
(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))))
|
||||||
|
(bootcfg (operating-system-bootcfg os)))
|
||||||
(mlet* %store-monad ((os-drv (operating-system-derivation os))
|
(if (string=? "iso9660" file-system-type)
|
||||||
(bootcfg (operating-system-bootcfg os)))
|
(iso9660-image #:name name
|
||||||
(if (string=? "iso9660" file-system-type)
|
#:file-system-label root-label
|
||||||
(iso9660-image #:name name
|
#:file-system-uuid root-uuid
|
||||||
#:file-system-label root-label
|
#:os os
|
||||||
#:file-system-uuid root-uuid
|
#:register-closures? #t
|
||||||
#:os-drv os-drv
|
#:bootcfg-drv bootcfg
|
||||||
#:register-closures? #t
|
#:bootloader (bootloader-configuration-bootloader
|
||||||
#:bootcfg-drv bootcfg
|
(operating-system-bootloader os))
|
||||||
#:bootloader (bootloader-configuration-bootloader
|
#:inputs `(("system" ,os)
|
||||||
(operating-system-bootloader os))
|
("bootcfg" ,bootcfg)))
|
||||||
#:inputs `(("system" ,os-drv)
|
(qemu-image #:name name
|
||||||
("bootcfg" ,bootcfg)))
|
#:os os
|
||||||
(qemu-image #:name name
|
#:bootcfg-drv bootcfg
|
||||||
#:os-drv os-drv
|
#:bootloader (bootloader-configuration-bootloader
|
||||||
#:bootcfg-drv bootcfg
|
(operating-system-bootloader os))
|
||||||
#:bootloader (bootloader-configuration-bootloader
|
#:disk-image-size disk-image-size
|
||||||
(operating-system-bootloader os))
|
#:disk-image-format "raw"
|
||||||
#:disk-image-size disk-image-size
|
#:file-system-type file-system-type
|
||||||
#:disk-image-format "raw"
|
#:file-system-label root-label
|
||||||
#:file-system-type file-system-type
|
#:file-system-uuid root-uuid
|
||||||
#:file-system-label root-label
|
#:copy-inputs? #t
|
||||||
#:file-system-uuid root-uuid
|
#:register-closures? #t
|
||||||
#:copy-inputs? #t
|
#:inputs `(("system" ,os)
|
||||||
#:register-closures? #t
|
("bootcfg" ,bootcfg))))))
|
||||||
#:inputs `(("system" ,os-drv)
|
|
||||||
("bootcfg" ,bootcfg)))))))
|
|
||||||
|
|
||||||
(define* (system-qemu-image os
|
(define* (system-qemu-image os
|
||||||
#:key
|
#:key
|
||||||
|
@ -702,30 +698,28 @@ 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
|
||||||
;; it works regardless of how the image is used ("qemu -hda",
|
;; it works regardless of how the image is used ("qemu -hda",
|
||||||
;; Xen, etc.).
|
;; Xen, etc.).
|
||||||
(file-systems (cons (file-system
|
(file-systems (cons (file-system
|
||||||
(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
|
(bootcfg (operating-system-bootcfg os)))
|
||||||
((os-drv (operating-system-derivation os))
|
(qemu-image #:os os
|
||||||
(bootcfg (operating-system-bootcfg os)))
|
#:bootcfg-drv bootcfg
|
||||||
(qemu-image #:os-drv os-drv
|
#:bootloader (bootloader-configuration-bootloader
|
||||||
#:bootcfg-drv bootcfg
|
(operating-system-bootloader os))
|
||||||
#:bootloader (bootloader-configuration-bootloader
|
#:disk-image-size disk-image-size
|
||||||
(operating-system-bootloader os))
|
#:file-system-type file-system-type
|
||||||
#:disk-image-size disk-image-size
|
#:file-system-uuid root-uuid
|
||||||
#:file-system-type file-system-type
|
#:inputs `(("system" ,os)
|
||||||
#:file-system-uuid root-uuid
|
("bootcfg" ,bootcfg))
|
||||||
#:inputs `(("system" ,os-drv)
|
#:copy-inputs? #t)))
|
||||||
("bootcfg" ,bootcfg))
|
|
||||||
#:copy-inputs? #t))))
|
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
|
@ -829,25 +823,26 @@ 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
|
|
||||||
;; BOOTCFG and all its dependencies, including the output of OS-DRV.
|
|
||||||
;; 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.
|
|
||||||
(qemu-image #:os-drv os-drv
|
|
||||||
#:bootcfg-drv bootcfg
|
|
||||||
#:bootloader (bootloader-configuration-bootloader
|
|
||||||
(operating-system-bootloader os))
|
|
||||||
#:disk-image-size disk-image-size
|
|
||||||
#:file-system-uuid root-uuid
|
|
||||||
#:inputs (if full-boot?
|
|
||||||
`(("bootcfg" ,bootcfg))
|
|
||||||
'())
|
|
||||||
|
|
||||||
;; XXX: Passing #t here is too slow, so let it off by default.
|
;; XXX: When FULL-BOOT? is true, we end up creating an image that contains
|
||||||
#:register-closures? #f
|
;; BOOTCFG and all its dependencies, including the output of OS.
|
||||||
#:copy-inputs? full-boot?)))
|
;; 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.
|
||||||
|
(qemu-image #:os os
|
||||||
|
#:bootcfg-drv bootcfg
|
||||||
|
#:bootloader (bootloader-configuration-bootloader
|
||||||
|
(operating-system-bootloader os))
|
||||||
|
#:disk-image-size disk-image-size
|
||||||
|
#:file-system-uuid root-uuid
|
||||||
|
#:inputs (if full-boot?
|
||||||
|
`(("bootcfg" ,bootcfg))
|
||||||
|
'())
|
||||||
|
|
||||||
|
;; XXX: Passing #t here is too slow, so let it off by default.
|
||||||
|
#:register-closures? #f
|
||||||
|
#: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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
|
@ -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))
|
||||||
|
|
|
@ -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
|
|
@ -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)))))
|
|
@ -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'
|
||||||
|
|
|
@ -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)
|
|
||||||
;; Files served by 'guix publish' are accessible under a single
|
(list (lambda (file algo hash)
|
||||||
;; hash algorithm.
|
;; Files served by 'guix publish' are accessible under a single
|
||||||
(string-append "http://mirror.hydra.gnu.org/file/"
|
;; hash algorithm.
|
||||||
file "/" (symbol->string algo) "/"
|
(string-append "https://mirror.hydra.gnu.org/file/"
|
||||||
(bytevector->nix-base32-string hash)))
|
file "/" (symbol->string algo) "/"
|
||||||
(lambda (file algo hash)
|
(bytevector->nix-base32-string hash)))
|
||||||
;; 'tarballs.nixos.org' supports several algorithms.
|
(lambda (file algo hash)
|
||||||
(string-append "http://tarballs.nixos.org/"
|
;; 'tarballs.nixos.org' supports several algorithms.
|
||||||
(symbol->string algo) "/"
|
(string-append "https://tarballs.nixos.org/"
|
||||||
(bytevector->nix-base32-string hash)))))
|
(symbol->string algo) "/"
|
||||||
|
(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.
|
||||||
|
|
|
@ -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,17 +212,20 @@ throughput."
|
||||||
(current-terminal-columns))
|
(current-terminal-columns))
|
||||||
log-port)
|
log-port)
|
||||||
(force-output log-port))
|
(force-output log-port))
|
||||||
(let* ((throughput (/ transferred elapsed))
|
;; If we don't know the total size, the last transfer will have a 0B
|
||||||
(left (format #f " ~a" file))
|
;; size. Don't display it.
|
||||||
(right (format #f "~a/s ~a | ~a transferred"
|
(unless (zero? transferred)
|
||||||
(byte-count->string throughput)
|
(let* ((throughput (/ transferred elapsed))
|
||||||
(seconds->string elapsed)
|
(left (format #f " ~a" file))
|
||||||
(byte-count->string transferred))))
|
(right (format #f "~a/s ~a | ~a transferred"
|
||||||
(erase-current-line log-port)
|
(byte-count->string throughput)
|
||||||
(display (string-pad-middle left right
|
(seconds->string elapsed)
|
||||||
(current-terminal-columns))
|
(byte-count->string transferred))))
|
||||||
log-port)
|
(erase-current-line log-port)
|
||||||
(force-output log-port))))
|
(display (string-pad-middle left right
|
||||||
|
(current-terminal-columns))
|
||||||
|
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.
|
||||||
|
|
|
@ -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,21 +251,21 @@ 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)))
|
||||||
|
|
||||||
(mbegin %store-monad
|
(mlet %store-monad ((bootcfg (lower-object bootcfg)))
|
||||||
;; Copy the closure of BOOTCFG, which includes OS-DIR,
|
(mbegin %store-monad
|
||||||
;; eventual background image and so on.
|
;; Copy the closure of BOOTCFG, which includes OS-DIR,
|
||||||
(maybe-copy
|
;; eventual background image and so on.
|
||||||
(derivation->output-path bootcfg))
|
(maybe-copy (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)
|
||||||
(populate os-dir target)
|
(populate os-dir target)
|
||||||
|
|
||||||
(mwhen install-bootloader?
|
(mwhen install-bootloader?
|
||||||
(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 "/"))))
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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");
|
||||||
|
|
Loading…
Reference in New Issue