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 Julien Lepiller <julien@lepiller.eu>
|
||||
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
|
@ -172,6 +173,7 @@ MODULES = \
|
|||
guix/build/syscalls.scm \
|
||||
guix/build/gremlin.scm \
|
||||
guix/build/debug-link.scm \
|
||||
guix/build/clojure-utils.scm \
|
||||
guix/build/emacs-utils.scm \
|
||||
guix/build/java-utils.scm \
|
||||
guix/build/lisp-utils.scm \
|
||||
|
|
|
@ -163,8 +163,8 @@ if test "x$guix_build_daemon" = "xyes"; then
|
|||
[chmod +x nix/scripts/download])
|
||||
AC_CONFIG_FILES([nix/scripts/substitute],
|
||||
[chmod +x nix/scripts/substitute])
|
||||
AC_CONFIG_FILES([nix/scripts/guix-authenticate],
|
||||
[chmod +x nix/scripts/guix-authenticate])
|
||||
AC_CONFIG_FILES([nix/scripts/authenticate],
|
||||
[chmod +x nix/scripts/authenticate])
|
||||
AC_CONFIG_FILES([nix/scripts/offload],
|
||||
[chmod +x nix/scripts/offload])
|
||||
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
|
||||
simply prefix each command with
|
||||
@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
|
||||
such that @command{guix-daemon} and the tools it uses can find the Guile
|
||||
modules they need.}:
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
@c Identifier of the OpenPGP key used to sign tarballs and such.
|
||||
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
|
||||
@set KEY-SERVER pool.sks-keyservers.net
|
||||
|
||||
@copying
|
||||
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 Florian Pelz@*
|
||||
Copyright @copyright{} 2018 Laura Lazzati@*
|
||||
Copyright @copyright{} 2018 Alex Vong@*
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
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:
|
||||
|
||||
@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
|
||||
|
||||
@noindent
|
||||
|
@ -4393,6 +4396,63 @@ The @code{install} phase installs the binaries, and it also installs the
|
|||
source code and @file{Cargo.toml} file.
|
||||
@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
|
||||
This variable is exported by @code{(guix build-system cmake)}. It
|
||||
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:
|
||||
|
||||
@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
|
||||
|
||||
@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}.
|
||||
|
||||
@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
|
||||
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.
|
||||
|
||||
@item @code{disable-vpn?} (default: @code{#f})
|
||||
When true, enable connman's vpn plugin.
|
||||
When true, disable connman's vpn plugin.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
|
@ -21914,10 +21975,10 @@ here is how to use it and customize it further.
|
|||
|
||||
@cindex initrd
|
||||
@cindex initial RAM disk
|
||||
@deffn {Monadic Procedure} raw-initrd @var{file-systems} @
|
||||
@deffn {Scheme Procedure} raw-initrd @var{file-systems} @
|
||||
[#:linux-modules '()] [#:mapped-devices '()] @
|
||||
[#: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
|
||||
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.
|
||||
|
@ -21935,10 +21996,10 @@ When @var{volatile-root?} is true, the root file system is writable but any chan
|
|||
to it are lost.
|
||||
@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]@
|
||||
[#: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
|
||||
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
|
||||
|
@ -21958,9 +22019,9 @@ program. That gives a lot of flexibility. The
|
|||
@code{expression->initrd} procedure builds such an initrd, given the
|
||||
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"]
|
||||
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,
|
||||
upon booting. All the derivations referenced by @var{exp} are
|
||||
automatically copied to the initrd.
|
||||
|
|
|
@ -19,12 +19,8 @@
|
|||
|
||||
(define-module (gnu bootloader extlinux)
|
||||
#:use-module (gnu bootloader)
|
||||
#:use-module (gnu system)
|
||||
#:use-module (gnu build bootloader)
|
||||
#:use-module (gnu packages bootloaders)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix utils)
|
||||
#:export (extlinux-bootloader
|
||||
extlinux-bootloader-gpt))
|
||||
|
@ -78,7 +74,7 @@ TIMEOUT ~a~%"
|
|||
(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/>.
|
||||
|
||||
(define-module (gnu bootloader grub)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix monads)
|
||||
#:use-module ((guix utils) #:select (%current-system))
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix download)
|
||||
#:use-module (gnu artwork)
|
||||
#:use-module (gnu system)
|
||||
#:use-module (gnu bootloader)
|
||||
#:use-module (gnu system uuid)
|
||||
#:use-module (gnu system file-systems)
|
||||
#:autoload (gnu packages bootloaders) (grub)
|
||||
#:autoload (gnu packages compression) (gzip)
|
||||
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
|
||||
#:autoload (gnu packages guile) (guile-2.2)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:export (grub-image
|
||||
grub-image?
|
||||
grub-image-aspect-ratio
|
||||
|
@ -121,7 +113,7 @@ otherwise."
|
|||
|
||||
(define* (svg->png svg #:key width height)
|
||||
"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-extensions (list guile-rsvg guile-cairo)
|
||||
#~(begin
|
||||
|
@ -138,15 +130,13 @@ WIDTH/HEIGHT, or #f if none was found."
|
|||
(= (grub-image-aspect-ratio image) ratio))
|
||||
(grub-theme-images
|
||||
(bootloader-theme config)))))
|
||||
(if image
|
||||
(and image
|
||||
(svg->png (grub-image-file image)
|
||||
#:width width #:height height)
|
||||
(with-monad %store-monad
|
||||
(return #f)))))
|
||||
#:width width #:height height))))
|
||||
|
||||
(define* (eye-candy config store-device store-mount-point
|
||||
#: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
|
||||
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
|
||||
|
@ -194,8 +184,10 @@ fi~%" #$font-file)
|
|||
(strip-mount-point store-mount-point
|
||||
(file-append grub "/share/grub/unicode.pf2")))
|
||||
|
||||
(mlet* %store-monad ((image (grub-background-image config)))
|
||||
(return (and image
|
||||
(define image
|
||||
(grub-background-image config))
|
||||
|
||||
(and image
|
||||
#~(format #$port "
|
||||
function setup_gfxterm {~a}
|
||||
|
||||
|
@ -220,7 +212,7 @@ fi~%"
|
|||
|
||||
#$(strip-mount-point store-mount-point image)
|
||||
#$(theme-colors grub-theme-color-normal)
|
||||
#$(theme-colors grub-theme-color-highlight))))))
|
||||
#$(theme-colors grub-theme-color-highlight))))
|
||||
|
||||
|
||||
;;;
|
||||
|
@ -331,13 +323,13 @@ entries corresponding to old generations of the system."
|
|||
#$(grub-root-search device kernel)
|
||||
#$kernel (string-join (list #$@arguments))
|
||||
#$initrd))))
|
||||
(mlet %store-monad ((sugar (eye-candy config
|
||||
(menu-entry-device
|
||||
(first all-entries))
|
||||
(menu-entry-device-mount-point
|
||||
(first all-entries))
|
||||
(define sugar
|
||||
(eye-candy config
|
||||
(menu-entry-device (first all-entries))
|
||||
(menu-entry-device-mount-point (first all-entries))
|
||||
#:system system
|
||||
#:port #~port)))
|
||||
#:port #~port))
|
||||
|
||||
(define builder
|
||||
#~(call-with-output-file #$output
|
||||
(lambda (port)
|
||||
|
@ -360,7 +352,7 @@ submenu \"GNU system, old configurations...\" {~%")
|
|||
(format port "}~%"))
|
||||
#~()))))
|
||||
|
||||
(gexp->derivation "grub.cfg" builder)))
|
||||
(computed-file "grub.cfg" builder))
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -20,13 +20,8 @@
|
|||
(define-module (gnu bootloader u-boot)
|
||||
#:use-module (gnu bootloader extlinux)
|
||||
#:use-module (gnu bootloader)
|
||||
#:use-module (gnu system)
|
||||
#:use-module (gnu build bootloader)
|
||||
#:use-module (gnu packages bootloaders)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix utils)
|
||||
#:export (u-boot-bootloader
|
||||
u-boot-a20-olinuxino-lime-bootloader
|
||||
u-boot-a20-olinuxino-lime2-bootloader
|
||||
|
|
|
@ -148,11 +148,15 @@ properties. Return #t on success."
|
|||
`("-G" ,(string-join supplementary-groups ","))
|
||||
'())
|
||||
,@(if comment `("-c" ,comment) '())
|
||||
,@(if (and home create-home?)
|
||||
(if (file-exists? home)
|
||||
`("-d" ,home) ; avoid warning from 'useradd'
|
||||
`("-d" ,home "--create-home"))
|
||||
,@(if home `("-d" ,home) '())
|
||||
|
||||
;; Home directories of non-system accounts are created by
|
||||
;; 'activate-user-home'.
|
||||
,@(if (and home create-home? system?
|
||||
(not (file-exists? home)))
|
||||
'("--create-home")
|
||||
'())
|
||||
|
||||
,@(if shell `("-s" ,shell) '())
|
||||
,@(if password `("-p" ,password) '())
|
||||
,@(if system? '("--system") '())
|
||||
|
@ -229,10 +233,7 @@ numeric gid or #f."
|
|||
#:supplementary-groups supplementary-groups
|
||||
#:comment comment
|
||||
#:home home
|
||||
|
||||
;; Home directories of non-system accounts are created by
|
||||
;; 'activate-user-home'.
|
||||
#:create-home? (and create-home? system?)
|
||||
#:create-home? create-home?
|
||||
|
||||
#:shell shell
|
||||
#:password password)
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
|
||||
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
|
||||
# Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
|
@ -60,6 +61,7 @@ GNU_SYSTEM_MODULES = \
|
|||
%D%/packages/android.scm \
|
||||
%D%/packages/animation.scm \
|
||||
%D%/packages/anthy.scm \
|
||||
%D%/packages/antivirus.scm \
|
||||
%D%/packages/apl.scm \
|
||||
%D%/packages/apr.scm \
|
||||
%D%/packages/aspell.scm \
|
||||
|
@ -614,6 +616,8 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/ceph-skip-unittest_blockdev.patch \
|
||||
%D%/packages/patches/ceph-volume-respect-PATH.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-libsanitizer-ustat-fix.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-scheme-complete-scheme-r5rs-info.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/erlang-man-path.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/ttf2eot-cstddef.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/tuxpaint-stamps-path.patch \
|
||||
%D%/packages/patches/twinkle-include-qregexpvalidator.patch \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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 © 2016, 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; 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
|
||||
(package
|
||||
(name "gp2c")
|
||||
(version "0.0.11")
|
||||
(version "0.0.11pl1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -187,7 +187,7 @@ PARI is also available as a C library to allow for faster computations.")
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1z69xj2dpd8yyi8108rz26c50xpv0k2j8qnk0bzy1c5lw3pd1adm"))))
|
||||
"1c6f6vmncw032kfzrfyr8bynw6yd3faxpy2285r009fmr0zxfs5s"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
(inputs `(("pari-gp" ,pari-gp)))
|
||||
|
@ -210,6 +210,36 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
|
|||
(license license:gpl2)
|
||||
(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
|
||||
(package
|
||||
(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 Brett Gilio <brettg@posteo.net>
|
||||
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -427,6 +428,46 @@ and editing digital audio. It features digital effects and spectrum analysis
|
|||
tools.")
|
||||
(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
|
||||
(package
|
||||
(name "azr3")
|
||||
|
@ -514,6 +555,47 @@ tools (analyzer, mono/stereo tools, crossovers).")
|
|||
;; The plugins are released under LGPLv2.1+
|
||||
(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
|
||||
(package
|
||||
(name "espeak")
|
||||
|
@ -1045,7 +1127,7 @@ follower.")
|
|||
(define-public fluidsynth
|
||||
(package
|
||||
(name "fluidsynth")
|
||||
(version "2.0.1")
|
||||
(version "2.0.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
|
@ -1054,7 +1136,7 @@ follower.")
|
|||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"1mqyym5qkh8xd1rqj3yhfxbw5dxjcrljb6nkfqzvcarlv4h6rjn7"))))
|
||||
"02vs5sfsyh1dl7wlcvgs4w3x0qcmsl7vi000qgp99ynwh3wjb274"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no check target
|
||||
|
@ -1193,7 +1275,7 @@ PS, and DAB+.")
|
|||
`(list (string-append "prefix=" (assoc-ref %outputs "out"))
|
||||
"world"))))
|
||||
(native-inputs
|
||||
`(("llvm" ,llvm-3.8-with-rtti)
|
||||
`(("llvm" ,llvm-3.8)
|
||||
("which" ,which)
|
||||
("xxd" ,xxd)
|
||||
("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")
|
||||
(description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
|
||||
(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
|
||||
(package
|
||||
(name "r-genomeinfodb")
|
||||
(version "1.18.0")
|
||||
(version "1.18.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (bioconductor-uri "GenomeInfoDb" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1xqpgngd8by0yn627v9kz26a03v5a1lhcfwlnx2i0ivplk9bd40s"))))
|
||||
"049pyzr8iszv3g7wdqf3pz7vg7bzd450c20ln6fgw4g5xnkkr10s"))))
|
||||
(properties
|
||||
`((upstream-name . "GenomeInfoDb")))
|
||||
(build-system r-build-system)
|
||||
|
@ -9748,14 +9748,14 @@ structure (pcaRes) to provide a common interface to the PCA results.")
|
|||
(define-public r-msnbase
|
||||
(package
|
||||
(name "r-msnbase")
|
||||
(version "2.8.0")
|
||||
(version "2.8.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (bioconductor-uri "MSnbase" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0nnlydpklmv9kwlk3gkjgabx7l6y4gav3imq98w8wskb1fhm50c0"))))
|
||||
"0y658anh06vnvbkfs7r8q40gqgyqr2r8kj7jlpnp33fy1lvp1nv7"))))
|
||||
(properties `((upstream-name . "MSnbase")))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
|
@ -10223,14 +10223,14 @@ originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2):
|
|||
(define-public r-ensembldb
|
||||
(package
|
||||
(name "r-ensembldb")
|
||||
(version "2.6.1")
|
||||
(version "2.6.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (bioconductor-uri "ensembldb" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1js05dcv1dj4g2vj7lzlg0rgjcjlk2irdr9rxqpwxmivm8nbvf36"))))
|
||||
"0hdz1f34v7sas2v4225icwl3wd4sf17ykpd5dkbx1hc7wcy4w3np"))))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
`(("r-annotationdbi" ,r-annotationdbi)
|
||||
|
@ -11166,7 +11166,7 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
|
|||
(define-public sambamba
|
||||
(package
|
||||
(name "sambamba")
|
||||
(version "0.6.7-10-g223fa20")
|
||||
(version "0.6.8")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -11176,7 +11176,7 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
|
|||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zb9hrxglxqh13ava9wwri30cvf85hjnbn8ccnr8l60a3k5avczn"))))
|
||||
"0k0cz3qcv98p6cq09zlbgnjsggxcqbcmzxg5zikgcgbr2nfq4lry"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#: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
|
||||
(lambda _
|
||||
(substitute* "gen_ldc_version_info.py"
|
||||
(("/usr/bin/env.*") (which "python")))
|
||||
(("/usr/bin/env.*") (which "python3")))
|
||||
(substitute* "Makefile"
|
||||
(("\\$\\(shell which ldmd2\\)") (which "ldmd2")))
|
||||
;; We use ldc2 instead of ldmd2 to compile sambamba.
|
||||
(("\\$\\(shell which ldmd2\\)") (which "ldc2")))
|
||||
#t))
|
||||
(add-after 'unpack 'place-biod-and-undead
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
|
@ -11201,21 +11202,21 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
|
|||
(substitute* "Makefile"
|
||||
(("htslib/libhts.a lz4/lib/liblz4.a")
|
||||
"-L-lhts -L-llz4")
|
||||
((" htslib-static lz4-static") ""))
|
||||
((" lz4-static htslib-static") ""))
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin")))
|
||||
(mkdir-p bin)
|
||||
(install-file "build/sambamba" bin)
|
||||
(install-file "bin/sambamba" bin)
|
||||
#t))))))
|
||||
(native-inputs
|
||||
`(("ldc" ,ldc)
|
||||
("rdmd" ,rdmd)
|
||||
("python" ,python2-minimal)
|
||||
("python" ,python-minimal)
|
||||
("biod"
|
||||
,(let ((commit "c778e4f2d8bacea7499283ce39f5577b232732c6"))
|
||||
,(let ((commit "4f1a7d2fb7ef3dfe962aa357d672f354ebfbe42e"))
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
|
@ -11226,20 +11227,20 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
|
|||
"-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"1z90562hg47i63gx042wb3ak2vqjg5z7hwgn9bp2pdxfg3nxrw37")))))
|
||||
"1k5pdjv1qvi0a3rwd1sfq6zbj37l86i7bf710m4c0y6737lxj426")))))
|
||||
("undead"
|
||||
,(let ((commit "92803d25c88657e945511f0976a0c79d8da46e89"))
|
||||
,(let ((commit "9be93876982b5f14fcca60832563b3cd767dd84d"))
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/dlang/undeaD.git")
|
||||
(url "https://github.com/biod/undeaD.git")
|
||||
(commit commit)))
|
||||
(file-name (string-append "undead-"
|
||||
(string-take commit 9)
|
||||
"-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"0vq6n81vzqvgphjw54lz2isc1j8lcxwjdbrhqz1h5gwrvw9w5138")))))))
|
||||
"1xfarj0nqlmi5jd1vmcmm7pabzaf9hxyvk6hp0d6jslb5k9r8r3d")))))))
|
||||
(inputs
|
||||
`(("lz4" ,lz4)
|
||||
("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.")
|
||||
(license (list license:gpl3 ;filtlong
|
||||
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 cdrom)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages disk)
|
||||
#: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
|
||||
(package
|
||||
(name "u-boot")
|
||||
(version "2018.09")
|
||||
(version "2018.11")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(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"))
|
||||
(sha256
|
||||
(base32
|
||||
"0s122kyz1svvs2yjzj4j9qravl3ra4vn0fjqgski7rlczqyg56w3"))))
|
||||
"0znkwljfwwn4y7j20pzz4ilqw8znphrfxns0x1lwdzh3xbr96z3k"))))
|
||||
(native-inputs
|
||||
`(("bc" ,bc)
|
||||
("bison" ,bison)
|
||||
("dtc" ,dtc)
|
||||
("flex" ,flex)
|
||||
("lz4" ,lz4)
|
||||
("openssl" ,openssl)
|
||||
("python-2" ,python-2)
|
||||
("python2-coverage" ,python2-coverage)
|
||||
|
|
|
@ -1593,14 +1593,14 @@ the Kaplan-Meier and Aalen-Johansen methods.")
|
|||
(define-public r-dimred
|
||||
(package
|
||||
(name "r-dimred")
|
||||
(version "0.1.0")
|
||||
(version "0.2.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "dimRed" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0fasca5fsbrxdwv30hch7vb9snb844l7l8p5fjf239dq45xfy37v"))))
|
||||
"0ssy2qriiy6zdawriqcbl67qiq68ipml3frq7aqlq70r2fqyyw48"))))
|
||||
(properties `((upstream-name . "dimRed")))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs `(("r-drr" ,r-drr)))
|
||||
|
@ -1864,14 +1864,14 @@ provides a one-row summary of model-level statistics.")
|
|||
(define-public r-recipes
|
||||
(package
|
||||
(name "r-recipes")
|
||||
(version "0.1.3")
|
||||
(version "0.1.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "recipes" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1vqh3pxs4n1azhnd1lzg91vasya6g323kllhbrw177j7kdxqyimy"))))
|
||||
"0bwijw4427v2k5z3qci2kyr5dyzql8b3lvf88rwy16p741jckjsn"))))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
`(("r-broom" ,r-broom)
|
||||
|
@ -4450,14 +4450,14 @@ and adds the annotation to the plot.")
|
|||
(define-public r-ggpubr
|
||||
(package
|
||||
(name "r-ggpubr")
|
||||
(version "0.1.9")
|
||||
(version "0.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "ggpubr" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0rvfgii2gxarra7d33n6c63ky0mivxxyx35acsrn94xkbd8mbcsj"))))
|
||||
"0rkpcjb1x7lvhj68aam5airbi534jqyiq12x5xk40a25iifhghq6"))))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
`(("r-cowplot" ,r-cowplot)
|
||||
|
@ -6725,14 +6725,14 @@ detection, parallelism through BLAS and parallel user templates.")
|
|||
(define-public r-sjstats
|
||||
(package
|
||||
(name "r-sjstats")
|
||||
(version "0.17.1")
|
||||
(version "0.17.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "sjstats" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0s9b0xr8gmcm0kh48jkwk8ns0lqknd8kpys4f7czf0xwzmcx2n1z"))))
|
||||
"0c7g35vn7r9rylhp0gj1yfslg7jybwrhpqpp7vdcd90xfccih24r"))))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
`(("r-bayesplot" ,r-bayesplot)
|
||||
|
@ -6803,14 +6803,14 @@ differentiation.")
|
|||
(define-public r-ggeffects
|
||||
(package
|
||||
(name "r-ggeffects")
|
||||
(version "0.6.0")
|
||||
(version "0.7.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "ggeffects" version))
|
||||
(sha256
|
||||
(base32
|
||||
"00l02g7yssqxmcmbrzk2wsj3i9ywd0xsy0rmbfh57q1qi76a1wq1"))))
|
||||
"070c3fxmzajq2fy816s5pfqdyjlnzkabj97z7fcsva4h5rnqi9d6"))))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
`(("r-crayon" ,r-crayon)
|
||||
|
@ -7499,14 +7499,14 @@ netCDF files.")
|
|||
(define-public r-biocmanager
|
||||
(package
|
||||
(name "r-biocmanager")
|
||||
(version "1.30.3")
|
||||
(version "1.30.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "BiocManager" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0mfvx1xzsgiag9p42kdyqg8fvajyakrdy3z2smhdlaawzbi0qmax"))))
|
||||
"0kxs76pixk1d2lpvkyrq6nnvv1rqf55ph5f7igkadyyqirf3y2ah"))))
|
||||
(properties `((upstream-name . "BiocManager")))
|
||||
(build-system r-build-system)
|
||||
(home-page "https://cran.r-project.org/web/packages/BiocManager/")
|
||||
|
|
|
@ -3659,7 +3659,11 @@ after buffer changes.")
|
|||
version ".tar"))
|
||||
(sha256
|
||||
(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)
|
||||
(arguments
|
||||
`(#:tests? #t
|
||||
|
|
|
@ -397,7 +397,7 @@ support.")
|
|||
(define-public tiled
|
||||
(package
|
||||
(name "tiled")
|
||||
(version "1.2.0")
|
||||
(version "1.2.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
|
@ -406,7 +406,7 @@ support.")
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1rra48hlkcgqxwxi802fb182p1q0723c9hhfvkd5inz9467idd4c"))))
|
||||
"1dl06k2p0r7l20ghxcq5sn7j0jl2l8q4m27vmfs2qfgvldjll2h3"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("qtbase" ,qtbase)
|
||||
|
|
|
@ -5606,7 +5606,7 @@ quotation from a collection of quotes.")
|
|||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(data (assoc-ref inputs "xonotic-data")))
|
||||
(copy-recursively (string-append data "/share/xonotic")
|
||||
(symlink (string-append data "/share/xonotic")
|
||||
(string-append out "/share/xonotic"))
|
||||
#t)))
|
||||
(add-after 'install-binaries 'wrap-binaries
|
||||
|
|
|
@ -259,7 +259,8 @@ also known as DXTn or DXTC) for Mesa.")
|
|||
("libxvmc" ,libxvmc)
|
||||
,@(match (%current-system)
|
||||
((or "x86_64-linux" "i686-linux")
|
||||
`(("llvm" ,llvm)))
|
||||
;; FIXME: Change to 'llvm' in the next rebuild cycle.
|
||||
`(("llvm" ,llvm-without-rtti)))
|
||||
(_
|
||||
`()))
|
||||
("makedepend" ,makedepend)
|
||||
|
|
|
@ -2286,8 +2286,8 @@ Guile.")
|
|||
|
||||
;; There has not been any release yet.
|
||||
(define-public guile-newt
|
||||
(let ((commit "4eaa3cf84b9b426cc0ff7bec48b76cca6ca3ec83")
|
||||
(revision "1"))
|
||||
(let ((commit "a73889c57b0572347f7641facdb1bcf08922feff")
|
||||
(revision "2"))
|
||||
(package
|
||||
(name "guile-newt")
|
||||
(version (string-append "0-" revision "." (string-take commit 9)))
|
||||
|
@ -2299,7 +2299,7 @@ Guile.")
|
|||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ww7jbdsmjlsxm60ym6cb5s5kc4ljz8bn4y2lvcqnap0aihqfk10"))))
|
||||
"0k37vir22r2sq121lyy74grfai4643s7kr55z01k4j0bh27i06c3"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:make-flags
|
||||
|
|
|
@ -900,7 +900,7 @@ language bindings to VIGRA.")
|
|||
(define-public libwebp
|
||||
(package
|
||||
(name "libwebp")
|
||||
(version "1.0.0")
|
||||
(version "1.0.1")
|
||||
(source
|
||||
(origin
|
||||
;; No tarballs are provided for >0.6.1.
|
||||
|
@ -911,7 +911,7 @@ language bindings to VIGRA.")
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1w8jzdbr1s4238ygyrlxryycss3f2z6d9amxdq8m82nl3l6skar4"))))
|
||||
"09l4pq4k2acglkmwr96arn79rssl54sv7vrdrgsxqlg7v8c882zh"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("freeglut" ,freeglut)
|
||||
|
|
|
@ -1988,151 +1988,6 @@ new Date();"))
|
|||
`(("java-junit" ,java-junit)
|
||||
,@(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
|
||||
(package
|
||||
(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.
|
||||
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
|
||||
|
||||
(define %linux-libre-version "4.19.1")
|
||||
(define %linux-libre-hash "12mrrgg2ih4jiylpy45q5nsd8afj3nya0klr543s0mcga88v9527")
|
||||
(define %linux-libre-version "4.19.2")
|
||||
(define %linux-libre-hash "1yh4ll9qh4wmf9r62ksyic57g1iy1b84qbv855l545ilk12znbmj")
|
||||
|
||||
(define %linux-libre-4.19-patches
|
||||
(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
|
||||
#:configuration-file kernel-config))
|
||||
|
||||
(define %linux-libre-4.14-version "4.14.80")
|
||||
(define %linux-libre-4.14-hash "0h4hi5lqizdx5nk0f3immbcv2n7p5jh26m80v4x6bw4wi5b44fra")
|
||||
(define %linux-libre-4.14-version "4.14.81")
|
||||
(define %linux-libre-4.14-hash "0vxs8k7ka8aqnn1fcr88bhr07wa5jg83pq1rcjby9k422mbv254q")
|
||||
|
||||
(define-public linux-libre-4.14
|
||||
(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))
|
||||
|
||||
(define-public linux-libre-4.9
|
||||
(make-linux-libre "4.9.136"
|
||||
"1kk6px1jcwbgkpfmf9pdklk6kz90h5l8fvdqwmvnk4bz6b2xrrfp"
|
||||
(make-linux-libre "4.9.137"
|
||||
"1d8313r2k0qr4x7nqlnbwn5lzfc7dz6w8sfg47jml1q38c2fyjf2"
|
||||
%intel-compatible-systems
|
||||
#:configuration-file kernel-config))
|
||||
|
||||
|
@ -3188,7 +3188,7 @@ is flexible, efficient and uses a modular implementation.")
|
|||
(define-public fuse-exfat
|
||||
(package
|
||||
(name "fuse-exfat")
|
||||
(version "1.2.8")
|
||||
(version "1.3.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -3196,7 +3196,7 @@ is flexible, efficient and uses a modular implementation.")
|
|||
version "/" name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jwnxw0bg9v5ij8xvbg4xpjr50nykq8a1lmc2xkblz204rq7wd8z"))))
|
||||
"1lz00q8g4590mrdqmf13ba1s9zrqq645ymgm5p9y99ad0qv22r87"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
|
||||
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -34,6 +35,8 @@
|
|||
#:use-module (guix hg-download)
|
||||
#:use-module (guix utils)
|
||||
#: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 trivial)
|
||||
#: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 heap libdir)
|
||||
|
||||
(let ((dirs '("lib" "library" "examples" "contrib"
|
||||
"tools" "objc-bridge")))
|
||||
(let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
|
||||
,(match (%current-system)
|
||||
("x86_64-linux"
|
||||
"x86-headers64")
|
||||
("i686-linux"
|
||||
"x86-headers")))))
|
||||
(for-each copy-recursively
|
||||
dirs
|
||||
(map (cut string-append libdir <>) dirs)))
|
||||
|
@ -559,6 +566,119 @@ interface.")
|
|||
(license (list license:lgpl2.1
|
||||
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
|
||||
(let ((commit "68c5b1225572ecf2c52baf62f928063e5a30511b")
|
||||
(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)))
|
||||
(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
|
||||
(let* ((commit "12a055581fc262225272df43287dae48281900f5"))
|
||||
(package
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
|
||||
|
@ -66,6 +66,7 @@
|
|||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
|
||||
"-DBUILD_SHARED_LIBS:BOOL=TRUE"
|
||||
"-DLLVM_ENABLE_FFI:BOOL=TRUE"
|
||||
"-DLLVM_REQUIRES_RTTI=1" ; For some third-party utilities
|
||||
"-DLLVM_INSTALL_UTILS=ON") ; Needed for rustc.
|
||||
|
||||
;; 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.")
|
||||
(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
|
||||
#:optional (patches '()))
|
||||
(package
|
||||
|
@ -281,18 +302,6 @@ code analysis tools.")
|
|||
(base32
|
||||
"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
|
||||
(clang-runtime-from-llvm
|
||||
llvm-3.8
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
;;; Copyright © 2018 Mark Meyer <mark@ofosos.org>
|
||||
;;; Copyright © 2018 Ben Woodcroft <donttrustben@gmail.com>
|
||||
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
|
||||
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -300,7 +301,9 @@ networks) based on simulation of (stochastic) flow in graphs.")
|
|||
"1l5jbhwjpsj38x8b9698hfpkv75h8hn3kj0gihjhn8ym2cwwv110"))))
|
||||
(build-system ocaml-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
`(#:ocaml ,ocaml-4.02
|
||||
#:findlib ,ocaml4.02-findlib
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'patch-paths
|
||||
(lambda _
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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 © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
|
||||
|
@ -216,6 +216,18 @@ Linux kernel and C library interfaces employed by user-space programs.")
|
|||
automatically.")
|
||||
(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
|
||||
(package
|
||||
(name "txt2man")
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
|
||||
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2018 Eric Brown <brown@fastmail.com>
|
||||
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -1808,6 +1809,41 @@ scientific applications modeled by partial differential equations.")
|
|||
,@(delete "--with-mpi=0" ,cf)))))
|
||||
(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
|
||||
(package
|
||||
(name "python-kiwisolver")
|
||||
|
@ -1939,6 +1975,43 @@ arising after the discretization of partial differential equations.")
|
|||
,@(alist-delete "petsc" (package-propagated-inputs slepc-openmpi))))
|
||||
(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
|
||||
(package
|
||||
(name "mumps")
|
||||
|
@ -2716,6 +2789,18 @@ to BMP, JPEG or PNG image formats.")
|
|||
(lambda _
|
||||
(chmod "src/maxima" #o555)
|
||||
#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
|
||||
;; standard location. Also configure maxima to find gnuplot
|
||||
;; without having it on the PATH.
|
||||
|
@ -3861,15 +3946,15 @@ as equations, scalars, vectors, and matrices.")
|
|||
(define-public z3
|
||||
(package
|
||||
(name "z3")
|
||||
(version "4.5.0")
|
||||
(version "4.8.1")
|
||||
(home-page "https://github.com/Z3Prover/z3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/Z3Prover/z3/archive/z3-"
|
||||
version ".tar.gz"))
|
||||
(method git-fetch)
|
||||
(uri (git-reference (url home-page)
|
||||
(commit (string-append "z3-" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"032a5lvji2liwmc25jv52bdrhimqflvqbpg77ccaq1jykhiivbmf"))))
|
||||
"1vr57bwx40sd5riijyrhy70i2wnv9xrdihf6y5zdz56yq88rl48f"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
|
@ -3898,43 +3983,57 @@ as equations, scalars, vectors, and matrices.")
|
|||
(synopsis "Theorem prover")
|
||||
(description "Z3 is a theorem prover and @dfn{satisfiability modulo
|
||||
theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
|
||||
(home-page "https://github.com/Z3Prover/z3")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public cubicle
|
||||
(package
|
||||
(name "cubicle")
|
||||
(version "1.1.1")
|
||||
(version "1.1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://cubicle.lri.fr/cubicle-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1sny9c4fm14k014pk62ibpwbrjjirkx8xmhs9jg7q1hk7y7x3q2h"))))
|
||||
"10kk80jdmpdvql88sdjsh7vqzlpaphd8vip2lp47aarxjkwjlz1q"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("ocaml" ,ocaml)
|
||||
`(("automake" ,automake)
|
||||
("ocaml" ,ocaml)
|
||||
("which" ,(@@ (gnu packages base) which))))
|
||||
(propagated-inputs
|
||||
`(("z3" ,z3)))
|
||||
`(("ocaml-num" ,ocaml-num)
|
||||
("z3" ,z3)))
|
||||
(arguments
|
||||
`(#:configure-flags (list "--with-z3")
|
||||
#:make-flags (list "QUIET=")
|
||||
#:tests? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'configure-for-release
|
||||
(lambda _
|
||||
(substitute* "Makefile.in"
|
||||
(("SVNREV=") "#SVNREV="))))
|
||||
(("SVNREV=") "#SVNREV="))
|
||||
#t))
|
||||
(add-before 'configure 'fix-/bin/sh
|
||||
(lambda _
|
||||
(substitute* "configure"
|
||||
(("/bin/sh") (which "sh")))))
|
||||
(("-/bin/sh") (string-append "-" (which "sh"))))
|
||||
#t))
|
||||
(add-before 'configure 'fix-smt-z3wrapper.ml
|
||||
(lambda _
|
||||
(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/")
|
||||
(synopsis "Model checker for array-based systems")
|
||||
(description "Cubicle is a model checker for verifying safety properties
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
;;; Copyright © 2017 Dave Love <fx@gnu.org>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -29,6 +30,7 @@
|
|||
#:use-module (guix download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages gcc)
|
||||
#: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.
|
||||
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes")
|
||||
#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)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages gcc)
|
||||
#: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 numerical quadrature programs are included.")
|
||||
(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
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(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.
|
||||
;; Here we use a questionable hack where we hard-code root's
|
||||
|
@ -568,13 +569,13 @@ transactions from C or Python.")
|
|||
(define-public diffoscope
|
||||
(package
|
||||
(name "diffoscope")
|
||||
(version "104")
|
||||
(version "105")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0vnfhnvqvdwgh1sh2lmwad8jk2vjvq76p5xm3pfgxdik2yblmvqd"))))
|
||||
"0bqkwvrvlvybqfi73qv1k5xic2qzw5lv20imqadf1wc4l8vc0vq3"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#: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>
|
||||
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
|
||||
|
||||
---
|
||||
Makefile | 11 ++++++-----
|
||||
configure | 13 ++++++++++++-
|
||||
myocamlbuild.ml | 2 +-
|
||||
3 files changed, 19 insertions(+), 7 deletions(-)
|
||||
tests/Makefile | 2 +-
|
||||
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
|
||||
index 4a8ce17..d94a6d5 100644
|
||||
index b0980ee..6697922 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -25,7 +25,7 @@ PATH_BUILD=$(PATH_BASE)/_build
|
||||
|
@ -24,7 +36,7 @@ index 4a8ce17..d94a6d5 100644
|
|||
# DEFINITIONS
|
||||
@@ -33,7 +33,8 @@ PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect
|
||||
PROJECT_NAME=bisect
|
||||
OCAMLBUILD=$(PATH_OCAML_PREFIX)/bin/ocamlbuild
|
||||
OCAMLBUILD=ocamlbuild
|
||||
OCAMLBUILD_ENV=WARNINGS=$(WARNINGS) PATH_OCAML_PREFIX=$(PATH_OCAML_PREFIX)
|
||||
-OCAMLBUILD_FLAGS=-classic-display -no-links
|
||||
+CAMLP4_INCLUDE=$(shell test -z $(CAMLP4_LIBDIR) || echo "-cflags -I,$(CAMLP4_LIBDIR)")
|
||||
|
@ -42,13 +54,13 @@ index 4a8ce17..d94a6d5 100644
|
|||
- cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PATH_OCAML_PREFIX)/bin; \
|
||||
+ cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PREFIX)/bin; \
|
||||
fi; \
|
||||
- (test -x $(PATH_OCAML_PREFIX)/bin/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 $(PATH_OCAML_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 \
|
||||
$(PATH_OCAMLFIND) query $(PROJECT_NAME) && $(PATH_OCAMLFIND) remove $(PROJECT_NAME) || true; \
|
||||
$(PATH_OCAMLFIND) install $(PROJECT_NAME) META -optional \
|
||||
diff --git a/configure b/configure
|
||||
index bb7ebf4..61a3095 100755
|
||||
index bb7ebf4..43ef46b 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -21,7 +21,9 @@
|
||||
|
@ -79,7 +91,7 @@ index bb7ebf4..61a3095 100755
|
|||
ppx='TRUE';;
|
||||
*)
|
||||
- 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;;
|
||||
esac
|
||||
shift
|
||||
|
@ -93,33 +105,179 @@ index bb7ebf4..61a3095 100755
|
|||
# make options
|
||||
make_quiet=`make -f - <<EOF
|
||||
default: gnumake
|
||||
@@ -67,11 +76,13 @@ EOF`
|
||||
@@ -66,7 +75,9 @@ EOF`
|
||||
|
||||
# file creation
|
||||
echo "# timestamp: `date`" > Makefile.config
|
||||
+echo "PREFIX=$prefix" >> Makefile.config
|
||||
echo "PATH_OCAML_PREFIX=$ocaml_prefix" >> Makefile.config
|
||||
+echo "PATH_CAMLP4_PREFIX=$camlp4_prefix" >> Makefile.config
|
||||
echo "PATH_OCAMLFIND=$ocamlfind" >> Makefile.config
|
||||
echo "NATIVE_DYNLINK=$native_dynlink" >> Makefile.config
|
||||
echo "WARNINGS=$devel" >> Makefile.config
|
||||
echo "NO_CAMLP4=$no_camlp4" >> Makefile.config
|
||||
echo "PPX=$ppx" >> Makefile.config
|
||||
echo "MAKE_QUIET=$make_quiet" >> Makefile.config
|
||||
+echo "PREFIX=$prefix" >> Makefile.config
|
||||
echo "" >> Makefile.config
|
||||
echo 'Makefile.config successfully created'
|
||||
diff --git a/myocamlbuild.ml b/myocamlbuild.ml
|
||||
index 8aa25fd..09a7d48 100644
|
||||
--- a/myocamlbuild.ml
|
||||
+++ b/myocamlbuild.ml
|
||||
@@ -70,7 +70,7 @@ let () =
|
||||
| After_rules ->
|
||||
let camlp4of =
|
||||
try
|
||||
- let path_bin = Filename.concat (Sys.getenv "PATH_OCAML_PREFIX") "bin" in
|
||||
+ let path_bin = Filename.concat (Sys.getenv "PATH_CAMLP4_PREFIX") "bin" in
|
||||
Filename.concat path_bin "camlp4of"
|
||||
with _ -> "camlp4of" in
|
||||
flag ["ocaml"; "compile"; "pp_camlp4of"] (S[A"-pp"; A camlp4of]);
|
||||
--
|
||||
2.7.4
|
||||
diff --git a/tests/Makefile b/tests/Makefile
|
||||
index 1aba27f..9642323 100644
|
||||
--- a/tests/Makefile
|
||||
+++ b/tests/Makefile
|
||||
@@ -41,7 +41,7 @@ one: FORCE
|
||||
else \
|
||||
echo "Running tests for '$(NAME)'..." | tee -a _log; \
|
||||
(cd $(NAME) && \
|
||||
- $(MAKE) PATH_OCAML_BIN=$(PATH_OCAML_PREFIX)/bin \
|
||||
+ $(MAKE) PATH_OCAML_BIN=$(PATH_OCAML_PREFIX)/bin PATH_CAMLP4_PREFIX=$(PATH_CAMLP4_PREFIX) \
|
||||
COMPILER=ocamlc EXECUTABLE=bytecode RUN=./ LIB_EXT=cma EXE_SUFFIX='' \
|
||||
REPORT=../../_build/src/report/report.byte && \
|
||||
cd ..) || echo '*** error' >> _log; \
|
||||
diff --git a/tests/camlp4-comments/Makefile b/tests/camlp4-comments/Makefile
|
||||
index 33fca72..a918118 100644
|
||||
--- a/tests/camlp4-comments/Makefile
|
||||
+++ b/tests/camlp4-comments/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/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
|
||||
(package
|
||||
(name "python-joblib")
|
||||
(version "0.10.3")
|
||||
(version "0.13.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "joblib" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
|
||||
(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))))
|
||||
"0612nazad8dxmn3xghfrmjax6456l4xy6hn9cngs7vydi14ds7v5"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'disable-failing-tests
|
||||
(lambda _
|
||||
;; 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
|
||||
(replace 'check
|
||||
(lambda _ (invoke "pytest" "-v" "joblib"))))))
|
||||
(native-inputs
|
||||
`(("python-nose" ,python-nose)
|
||||
("python-sphinx" ,python-sphinx)
|
||||
("python-docutils" ,python-docutils)
|
||||
("python-numpydoc" ,python-numpydoc)))
|
||||
(home-page "http://pythonhosted.org/joblib/")
|
||||
`(("python-pytest" ,python-pytest)))
|
||||
(home-page "https://joblib.readthedocs.io/")
|
||||
(synopsis "Using Python functions as pipeline jobs")
|
||||
(description
|
||||
"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
|
||||
(package
|
||||
(name "python-kivy")
|
||||
(version "1.10.0")
|
||||
(version "1.10.1")
|
||||
(source
|
||||
(origin
|
||||
(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"))
|
||||
(sha256
|
||||
(base32
|
||||
"1394zh6kvf7k5d8vlzxcsfcailr3q59xwg9b1n7qaf25bvyq1h98"))))
|
||||
"1zzxjdp78hfjjiklzr82l4zwibwcq4j6kgicspqs6iyyfn5yisbw"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; Tests require many optional packages
|
||||
|
@ -10126,26 +10100,41 @@ Python to manipulate OpenDocument 1.2 files.")
|
|||
(define-public python-natsort
|
||||
(package
|
||||
(name "python-natsort")
|
||||
(version "5.0.2")
|
||||
(version "5.4.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "natsort" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0bh6j0l8iapjnsgg3bs6q075cnzjl6zw1vlgqyv3qrygm2cxypkn"))))
|
||||
"0i732amg6yzkx4g4c9j09jmqq39q377x9cl2nbkm5hax2c2v0wxf"))))
|
||||
(build-system python-build-system)
|
||||
(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
|
||||
(add-before 'check 'set-cachedir
|
||||
;; 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
|
||||
`(("python-hypothesis" ,python-hypothesis)
|
||||
("python-pytest-cache" ,python-pytest-cache)
|
||||
("python-pytest-cov" ,python-pytest-cov)
|
||||
("python-pytest-flakes" ,python-pytest-flakes)
|
||||
("python-pytest-pep8" ,python-pytest-pep8)))
|
||||
("python-pytest-mock" ,python-pytest-mock)
|
||||
("python-pytest" ,python-pytest)))
|
||||
(propagated-inputs ; TODO: Add python-fastnumbers.
|
||||
`(("python-pyicu" ,python-pyicu)))
|
||||
(home-page "https://github.com/SethMMorton/natsort")
|
||||
|
@ -10167,8 +10156,6 @@ functionality in the command line.")
|
|||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-pathlib" ,python2-pathlib)
|
||||
("python2-mock" ,python2-mock)
|
||||
("python2-enum34" ,python2-enum34)
|
||||
,@(package-native-inputs base))))))
|
||||
|
||||
(define-public python-glances
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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.
|
||||
;;;
|
||||
|
@ -18,10 +18,13 @@
|
|||
|
||||
(define-module (gnu packages simulation)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages cmake)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages gettext)
|
||||
|
@ -35,6 +38,8 @@
|
|||
#:use-module (gnu packages mpi)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#: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 tls)
|
||||
#:use-module (gnu packages version-control)
|
||||
|
@ -42,7 +47,9 @@
|
|||
#:use-module (gnu packages xorg)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#: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.")
|
||||
(license license:gpl3+)
|
||||
(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
|
||||
(package
|
||||
(name "r-openssl")
|
||||
(version "1.0.2")
|
||||
(version "1.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "openssl" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1djfpnphkcxx8idk5rjfzg8r8dnqsgc0shh2pw8lns5hap2wc5rc"))))
|
||||
"0ldxgcr33lawwr8wp14kdk2678gpkvqkzv6g333bhck1hn6qspzv"))))
|
||||
(build-system r-build-system)
|
||||
(inputs
|
||||
`(("libressl" ,libressl)))
|
||||
|
@ -4706,14 +4706,14 @@ models, generalized linear models and model-based clustering.")
|
|||
(define-public r-mclust
|
||||
(package
|
||||
(name "r-mclust")
|
||||
(version "5.4.1")
|
||||
(version "5.4.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "mclust" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1vcl4nl8by2vj2k9k84imy5m850khkgd8q02a8ica1h8vz9ijgn4"))))
|
||||
"09152swfpa3fzhmrq5cwb5kxgvrxvigv1m4v6rhcibrdhfd1x8x4"))))
|
||||
(build-system r-build-system)
|
||||
(native-inputs
|
||||
`(("gfortran" ,gfortran)))
|
||||
|
|
|
@ -2279,3 +2279,55 @@ used to keep a folder in sync between computers.")
|
|||
;; The web app is released under the AGPLv3+.
|
||||
(license (list license:gpl3+
|
||||
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
|
||||
(package
|
||||
(name "r-shinyfiles")
|
||||
(version "0.7.1")
|
||||
(version "0.7.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "shinyFiles" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1cbg09l7w2zbgxb4qjm9p873p0lzrihlzsk5xxi3cpxdckn6zsrm"))))
|
||||
"0dlcjrw96x72grg6j915070x8x98l7629pn86gf148iknflm7gd5"))))
|
||||
(properties `((upstream-name . "shinyFiles")))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
|
|
114
gnu/system.scm
114
gnu/system.scm
|
@ -127,10 +127,9 @@
|
|||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define (bootable-kernel-arguments kernel-arguments system.drv root-device)
|
||||
"Prepend extra arguments to KERNEL-ARGUMENTS that allow SYSTEM.DRV to be
|
||||
booted from ROOT-DEVICE"
|
||||
(cons* (string-append "--root="
|
||||
(define (bootable-kernel-arguments system root-device)
|
||||
"Return a list of kernel arguments (gexps) to boot SYSTEM from ROOT-DEVICE."
|
||||
(list (string-append "--root="
|
||||
(cond ((uuid? root-device)
|
||||
|
||||
;; Note: Always use the DCE format because that's
|
||||
|
@ -141,9 +140,8 @@ booted from ROOT-DEVICE"
|
|||
((file-system-label? root-device)
|
||||
(file-system-label->string root-device))
|
||||
(else root-device)))
|
||||
#~(string-append "--system=" #$system.drv)
|
||||
#~(string-append "--load=" #$system.drv "/boot")
|
||||
kernel-arguments))
|
||||
#~(string-append "--system=" #$system)
|
||||
#~(string-append "--load=" #$system "/boot")))
|
||||
|
||||
;; System-wide configuration.
|
||||
;; TODO: Add per-field docstrings/stexi.
|
||||
|
@ -156,7 +154,7 @@ booted from ROOT-DEVICE"
|
|||
(default '())) ; list of gexps/strings
|
||||
(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))
|
||||
(initrd-modules operating-system-initrd-modules ; list of strings
|
||||
(thunked) ; it's system-dependent
|
||||
|
@ -209,12 +207,11 @@ booted from ROOT-DEVICE"
|
|||
(sudoers-file operating-system-sudoers-file ; file-like
|
||||
(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
|
||||
directly by the user."
|
||||
(bootable-kernel-arguments (operating-system-user-kernel-arguments os)
|
||||
system.drv
|
||||
root-device))
|
||||
(append (bootable-kernel-arguments os root-device)
|
||||
(operating-system-user-kernel-arguments os)))
|
||||
|
||||
|
||||
;;;
|
||||
|
@ -328,14 +325,11 @@ format is unrecognized.
|
|||
The object has its kernel-arguments extended in order to make it bootable."
|
||||
(let* ((file (string-append system "/parameters"))
|
||||
(params (call-with-input-file file read-boot-parameters))
|
||||
(root (boot-parameters-root-device params))
|
||||
(kernel-arguments (boot-parameters-kernel-arguments params)))
|
||||
(if params
|
||||
(root (boot-parameters-root-device params)))
|
||||
(boot-parameters
|
||||
(inherit params)
|
||||
(kernel-arguments (bootable-kernel-arguments kernel-arguments
|
||||
system root)))
|
||||
#f)))
|
||||
(kernel-arguments (append (bootable-kernel-arguments system root)
|
||||
(boot-parameters-kernel-arguments params))))))
|
||||
|
||||
(define (boot-parameters->menu-entry conf)
|
||||
(menu-entry
|
||||
|
@ -448,7 +442,7 @@ value of the SYSTEM-SERVICE-TYPE service."
|
|||
(return `(("locale" ,locale)))
|
||||
(mlet %store-monad
|
||||
((kernel -> (operating-system-kernel os))
|
||||
(initrd (operating-system-initrd-file os))
|
||||
(initrd -> (operating-system-initrd-file os))
|
||||
(params (operating-system-boot-parameters-file os)))
|
||||
(return `(("kernel" ,kernel)
|
||||
("parameters" ,params)
|
||||
|
@ -876,12 +870,12 @@ hardware-related operations as necessary when booting a Linux container."
|
|||
(define make-initrd
|
||||
(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-modules
|
||||
(operating-system-initrd-modules os)
|
||||
#:mapped-devices mapped-devices)))
|
||||
(return (file-append initrd "/initrd"))))
|
||||
(file-append initrd "/initrd")))
|
||||
|
||||
(define (locale-name->definition* name)
|
||||
"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)))
|
||||
|
||||
(define* (operating-system-bootcfg os #:optional (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."
|
||||
(mlet* %store-monad
|
||||
((system (operating-system-derivation os))
|
||||
(root-fs -> (operating-system-root-file-system os))
|
||||
(root-device -> (file-system-device root-fs))
|
||||
(params (operating-system-boot-parameters os system root-device))
|
||||
(entry -> (boot-parameters->menu-entry params))
|
||||
(bootloader-conf -> (operating-system-bootloader os)))
|
||||
((bootloader-configuration-file-generator
|
||||
(bootloader-configuration-bootloader bootloader-conf))
|
||||
bootloader-conf (list entry) #:old-entries old-entries)))
|
||||
"Return the bootloader configuration file for OS. Use OLD-ENTRIES,
|
||||
a list of <menu-entry>, to populate the \"old entries\" menu."
|
||||
(let* ((root-fs (operating-system-root-file-system os))
|
||||
(root-device (file-system-device root-fs))
|
||||
(params (operating-system-boot-parameters
|
||||
os root-device
|
||||
#:system-kernel-arguments? #t))
|
||||
(entry (boot-parameters->menu-entry params))
|
||||
(bootloader-conf (operating-system-bootloader os)))
|
||||
(define generate-config-file
|
||||
(bootloader-configuration-file-generator
|
||||
(bootloader-configuration-bootloader bootloader-conf)))
|
||||
|
||||
(define (operating-system-boot-parameters os system.drv root-device)
|
||||
"Return a monadic <boot-parameters> record that describes the boot parameters
|
||||
of OS. SYSTEM.DRV is either a derivation or #f. If it's a derivation, adds
|
||||
kernel arguments for that derivation to <boot-parameters>."
|
||||
(mlet* %store-monad
|
||||
((initrd (operating-system-initrd-file os))
|
||||
(store -> (operating-system-store-file-system os))
|
||||
(bootloader -> (bootloader-configuration-bootloader
|
||||
(generate-config-file bootloader-conf (list entry)
|
||||
#:old-entries old-entries)))
|
||||
|
||||
(define* (operating-system-boot-parameters os root-device
|
||||
#:key system-kernel-arguments?)
|
||||
"Return a monadic <boot-parameters> record that describes the boot
|
||||
parameters of OS. When SYSTEM-KERNEL-ARGUMENTS? is true, add kernel arguments
|
||||
such as '--root' and '--load' to <boot-parameters>."
|
||||
(let* ((initrd (operating-system-initrd-file os))
|
||||
(store (operating-system-store-file-system os))
|
||||
(bootloader (bootloader-configuration-bootloader
|
||||
(operating-system-bootloader os)))
|
||||
(bootloader-name -> (bootloader-name bootloader))
|
||||
(label -> (kernel->boot-label (operating-system-kernel os))))
|
||||
(return (boot-parameters
|
||||
(bootloader-name (bootloader-name bootloader))
|
||||
(label (kernel->boot-label (operating-system-kernel os))))
|
||||
(boot-parameters
|
||||
(label label)
|
||||
(root-device root-device)
|
||||
(kernel (operating-system-kernel-file os))
|
||||
(kernel-arguments
|
||||
(if system.drv
|
||||
(operating-system-kernel-arguments os system.drv root-device)
|
||||
(if system-kernel-arguments?
|
||||
(operating-system-kernel-arguments os root-device)
|
||||
(operating-system-user-kernel-arguments os)))
|
||||
(initrd initrd)
|
||||
(bootloader-name bootloader-name)
|
||||
(store-device (ensure-not-/dev (file-system-device store)))
|
||||
(store-mount-point (file-system-mount-point store))))))
|
||||
(store-mount-point (file-system-mount-point store)))))
|
||||
|
||||
(define (device->sexp device)
|
||||
"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)))
|
||||
|
||||
(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
|
||||
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
|
||||
content-addressed \"system\" directory, it's usually not a good idea
|
||||
to give it because the content hash would change by the content hash
|
||||
|
||||
When SYSTEM-KERNEL-ARGUMENTS? is true, add kernel arguments such as '--root'
|
||||
and '--load' to the returned file (since the returned file is then usually
|
||||
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)."
|
||||
(mlet* %store-monad ((root -> (operating-system-root-file-system os))
|
||||
(device -> (file-system-device root))
|
||||
(params (operating-system-boot-parameters os
|
||||
system.drv
|
||||
device)))
|
||||
(let* ((root (operating-system-root-file-system os))
|
||||
(device (file-system-device root))
|
||||
(params (operating-system-boot-parameters
|
||||
os device
|
||||
#:system-kernel-arguments?
|
||||
system-kernel-arguments?)))
|
||||
(gexp->file "parameters"
|
||||
#~(boot-parameters
|
||||
(version 0)
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu system linux-initrd)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix store)
|
||||
|
@ -63,7 +61,7 @@
|
|||
(gzip gzip)
|
||||
(name "guile-initrd")
|
||||
(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
|
||||
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")
|
||||
#:gzip (string-append #$gzip "/bin/gzip")))))
|
||||
|
||||
(gexp->derivation name builder
|
||||
#:references-graphs `(("closure" ,init))))
|
||||
(computed-file name builder
|
||||
#:options
|
||||
`(#:references-graphs (("closure" ,init)))))
|
||||
|
||||
(define (flat-linux-module-directory linux modules)
|
||||
"Return a flat directory containing the Linux kernel modules listed in
|
||||
|
@ -143,7 +142,7 @@ MODULES and taken from LINUX."
|
|||
qemu-networking?
|
||||
volatile-root?
|
||||
(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
|
||||
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
|
||||
|
@ -294,7 +293,7 @@ FILE-SYSTEMS."
|
|||
volatile-root?
|
||||
(extra-modules '()) ;deprecated
|
||||
(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
|
||||
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
|
||||
|
|
|
@ -189,9 +189,7 @@ made available under the /xchg CIFS share."
|
|||
#~(when (zero? (system* #$user-builder))
|
||||
(reboot))))
|
||||
|
||||
(mlet* %store-monad
|
||||
((initrd (if initrd ; use the default initrd?
|
||||
(return initrd)
|
||||
(let ((initrd (or initrd
|
||||
(base-initrd file-systems
|
||||
#:on-error 'backtrace
|
||||
#:linux linux
|
||||
|
@ -254,7 +252,7 @@ made available under the /xchg CIFS share."
|
|||
file-system-uuid
|
||||
(system (%current-system))
|
||||
(qemu qemu-minimal)
|
||||
os-drv
|
||||
os
|
||||
bootcfg-drv
|
||||
bootloader
|
||||
register-closures?
|
||||
|
@ -302,7 +300,7 @@ INPUTS is a list of inputs (as for packages)."
|
|||
(set-path-environment-variable "PATH" '("bin" "sbin") inputs)
|
||||
(make-iso9660-image #$(bootloader-package bootloader)
|
||||
#$bootcfg-drv
|
||||
#$os-drv
|
||||
#$os
|
||||
"/xchg/guixsd.iso"
|
||||
#:register-closures? #$register-closures?
|
||||
#:closures graphs
|
||||
|
@ -331,7 +329,7 @@ INPUTS is a list of inputs (as for packages)."
|
|||
(file-system-type "ext4")
|
||||
file-system-label
|
||||
file-system-uuid
|
||||
os-drv
|
||||
os
|
||||
bootcfg-drv
|
||||
bootloader
|
||||
(register-closures? #t)
|
||||
|
@ -397,7 +395,7 @@ the image."
|
|||
#:closures graphs
|
||||
#:copy-closures? #$copy-inputs?
|
||||
#:register-closures? #$register-closures?
|
||||
#:system-directory #$os-drv
|
||||
#:system-directory #$os
|
||||
|
||||
;; Disable deduplication to speed things up,
|
||||
;; and because it doesn't help much for a
|
||||
|
@ -627,7 +625,7 @@ to USB sticks meant to be read-only."
|
|||
(string=? (file-system-mount-point fs) "/"))
|
||||
(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
|
||||
;; install QEMU networking or anything like that. Assume USB
|
||||
;; mass storage devices (usb-storage.ko) are available.
|
||||
|
@ -648,23 +646,21 @@ to USB sticks meant to be read-only."
|
|||
(mount-point "/")
|
||||
(device root-uuid)
|
||||
(type file-system-type))
|
||||
file-systems-to-keep)))))
|
||||
|
||||
(mlet* %store-monad ((os-drv (operating-system-derivation os))
|
||||
file-systems-to-keep))))
|
||||
(bootcfg (operating-system-bootcfg os)))
|
||||
(if (string=? "iso9660" file-system-type)
|
||||
(iso9660-image #:name name
|
||||
#:file-system-label root-label
|
||||
#:file-system-uuid root-uuid
|
||||
#:os-drv os-drv
|
||||
#:os os
|
||||
#:register-closures? #t
|
||||
#:bootcfg-drv bootcfg
|
||||
#:bootloader (bootloader-configuration-bootloader
|
||||
(operating-system-bootloader os))
|
||||
#:inputs `(("system" ,os-drv)
|
||||
#:inputs `(("system" ,os)
|
||||
("bootcfg" ,bootcfg)))
|
||||
(qemu-image #:name name
|
||||
#:os-drv os-drv
|
||||
#:os os
|
||||
#:bootcfg-drv bootcfg
|
||||
#:bootloader (bootloader-configuration-bootloader
|
||||
(operating-system-bootloader os))
|
||||
|
@ -675,8 +671,8 @@ to USB sticks meant to be read-only."
|
|||
#:file-system-uuid root-uuid
|
||||
#:copy-inputs? #t
|
||||
#:register-closures? #t
|
||||
#:inputs `(("system" ,os-drv)
|
||||
("bootcfg" ,bootcfg)))))))
|
||||
#:inputs `(("system" ,os)
|
||||
("bootcfg" ,bootcfg))))))
|
||||
|
||||
(define* (system-qemu-image os
|
||||
#:key
|
||||
|
@ -702,7 +698,7 @@ of the GNU system as described by OS."
|
|||
'dce)))
|
||||
|
||||
|
||||
(let ((os (operating-system (inherit os)
|
||||
(let* ((os (operating-system (inherit os)
|
||||
;; Assume we have an initrd with the whole QEMU shebang.
|
||||
|
||||
;; Force our own root file system. Refer to it by UUID so that
|
||||
|
@ -712,20 +708,18 @@ of the GNU system as described by OS."
|
|||
(mount-point "/")
|
||||
(device root-uuid)
|
||||
(type file-system-type))
|
||||
file-systems-to-keep)))))
|
||||
(mlet* %store-monad
|
||||
((os-drv (operating-system-derivation os))
|
||||
file-systems-to-keep))))
|
||||
(bootcfg (operating-system-bootcfg os)))
|
||||
(qemu-image #:os-drv os-drv
|
||||
(qemu-image #:os os
|
||||
#:bootcfg-drv bootcfg
|
||||
#:bootloader (bootloader-configuration-bootloader
|
||||
(operating-system-bootloader os))
|
||||
#:disk-image-size disk-image-size
|
||||
#:file-system-type file-system-type
|
||||
#:file-system-uuid root-uuid
|
||||
#:inputs `(("system" ,os-drv)
|
||||
#:inputs `(("system" ,os)
|
||||
("bootcfg" ,bootcfg))
|
||||
#:copy-inputs? #t))))
|
||||
#:copy-inputs? #t)))
|
||||
|
||||
|
||||
;;;
|
||||
|
@ -829,13 +823,14 @@ bootloader refers to: OS kernel, initrd, bootloader data, etc."
|
|||
;; Use a fixed UUID to improve determinism.
|
||||
(operating-system-uuid os 'dce))
|
||||
|
||||
(mlet* %store-monad ((os-drv (operating-system-derivation os))
|
||||
(bootcfg (operating-system-bootcfg os)))
|
||||
(define bootcfg
|
||||
(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.
|
||||
;; BOOTCFG and all its dependencies, including the output of OS.
|
||||
;; 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
|
||||
(qemu-image #:os os
|
||||
#:bootcfg-drv bootcfg
|
||||
#:bootloader (bootloader-configuration-bootloader
|
||||
(operating-system-bootloader os))
|
||||
|
@ -847,7 +842,7 @@ bootloader refers to: OS kernel, initrd, bootloader data, etc."
|
|||
|
||||
;; XXX: Passing #t here is too slow, so let it off by default.
|
||||
#:register-closures? #f
|
||||
#:copy-inputs? full-boot?)))
|
||||
#:copy-inputs? full-boot?))
|
||||
|
||||
(define* (common-qemu-options image shared-fs)
|
||||
"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;
|
||||
it is mostly useful when FULL-BOOT? is true."
|
||||
(mlet* %store-monad ((os -> (virtualized-operating-system os mappings full-boot?))
|
||||
(os-drv (operating-system-derivation os))
|
||||
(image (system-qemu-image/shared-store
|
||||
os
|
||||
#:full-boot? full-boot?
|
||||
#:disk-image-size disk-image-size)))
|
||||
(define kernel-arguments
|
||||
#~(list #$@(if graphic? #~() #~("console=ttyS0"))
|
||||
#+@(operating-system-kernel-arguments os os-drv "/dev/vda1")))
|
||||
#+@(operating-system-kernel-arguments os "/dev/vda1")))
|
||||
|
||||
(define qemu-exec
|
||||
#~(list (string-append #$qemu "/bin/" #$(qemu-command (%current-system)))
|
||||
#$@(if full-boot?
|
||||
#~()
|
||||
#~("-kernel" #$(operating-system-kernel-file os)
|
||||
"-initrd" #$(file-append os-drv "/initrd")
|
||||
"-initrd" #$(file-append os "/initrd")
|
||||
(format #f "-append ~s"
|
||||
(string-join #$kernel-arguments " "))))
|
||||
#$@(common-qemu-options image
|
||||
|
|
|
@ -154,10 +154,15 @@ info --version")
|
|||
(#f (reverse result))
|
||||
(x (loop (cons x result))))))
|
||||
marionette)))
|
||||
(lset= string=?
|
||||
(map passwd:name users)
|
||||
(lset= equal?
|
||||
(map (lambda (user)
|
||||
(list (passwd:name user)
|
||||
(passwd:dir user)))
|
||||
users)
|
||||
(list
|
||||
#$@(map user-account-name
|
||||
#$@(map (lambda (account)
|
||||
`(list ,(user-account-name account)
|
||||
,(user-account-home-directory account)))
|
||||
(operating-system-user-accounts os))))))
|
||||
|
||||
(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
|
||||
;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -28,7 +28,9 @@
|
|||
#:use-module (srfi srfi-1)
|
||||
#:export (%ocaml-build-system-modules
|
||||
package-with-ocaml4.01
|
||||
package-with-ocaml4.02
|
||||
strip-ocaml4.01-variant
|
||||
strip-ocaml4.02-variant
|
||||
ocaml-build
|
||||
ocaml-build-system))
|
||||
|
||||
|
@ -82,6 +84,14 @@
|
|||
(let ((module (resolve-interface '(gnu packages ocaml))))
|
||||
(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
|
||||
#:key variant-property)
|
||||
"Return a procedure of one argument, P. The procedure creates a package
|
||||
|
@ -139,12 +149,24 @@ pre-defined variants."
|
|||
"ocaml-" "ocaml4.01-"
|
||||
#: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)
|
||||
"Remove the 'ocaml4.01-variant' property from P."
|
||||
(package
|
||||
(inherit 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
|
||||
#:key source inputs native-inputs outputs system target
|
||||
(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)))
|
||||
(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)))
|
||||
(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 '())
|
||||
(use-make? #f) #:allow-other-keys)
|
||||
"Build the given package."
|
||||
(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")
|
||||
(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")))
|
||||
(zero? (apply system* "ocaml" "-I"
|
||||
(apply invoke "ocaml" "-I"
|
||||
(string-append (assoc-ref inputs "findlib")
|
||||
"/lib/ocaml/site-lib")
|
||||
file build-flags))))))
|
||||
file build-flags))))
|
||||
#t)
|
||||
|
||||
(define* (check #:key inputs outputs (make-flags '()) (test-target "test") tests?
|
||||
(use-make? #f) #:allow-other-keys)
|
||||
"Install the given package."
|
||||
(when tests?
|
||||
(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")
|
||||
(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")))
|
||||
(zero? (system* "ocaml" "-I"
|
||||
(invoke "ocaml" "-I"
|
||||
(string-append (assoc-ref inputs "findlib")
|
||||
"/lib/ocaml/site-lib")
|
||||
file test-target)))))))
|
||||
file test-target)))))
|
||||
#t)
|
||||
|
||||
(define* (install #:key outputs (build-flags '()) (make-flags '()) (use-make? #f)
|
||||
(install-target "install")
|
||||
|
@ -87,17 +90,19 @@
|
|||
"Install the given package."
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(if (and (file-exists? "setup.ml") (not use-make?))
|
||||
(zero? (apply system* "ocaml" "setup.ml"
|
||||
(string-append "-" install-target) build-flags))
|
||||
(apply invoke "ocaml" "setup.ml"
|
||||
(string-append "-" install-target) build-flags)
|
||||
(if (file-exists? "Makefile")
|
||||
(zero? (apply system* "make" install-target make-flags))
|
||||
(zero? (system* "opam-installer" "-i" (string-append "--prefix=" out)
|
||||
(string-append "--libdir=" out "/lib/ocaml/site-lib")))))))
|
||||
(apply invoke "make" install-target make-flags)
|
||||
(invoke "opam-installer" "-i" (string-append "--prefix=" out)
|
||||
(string-append "--libdir=" out "/lib/ocaml/site-lib")))))
|
||||
#t)
|
||||
|
||||
(define* (prepare-install #:key outputs #:allow-other-keys)
|
||||
"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") "/bin")))
|
||||
(mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
|
||||
#t)
|
||||
|
||||
(define %standard-phases
|
||||
;; 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
|
||||
;; procedure that takes a file name, an algorithm (symbol) and a hash
|
||||
;; (bytevector), and returns a URL or #f.
|
||||
;; Note: Avoid 'https' to mitigate <http://bugs.gnu.org/22774>.
|
||||
;; TODO: Add more.
|
||||
'(list (lambda (file algo hash)
|
||||
'(begin
|
||||
(use-modules (guix base32) (guix base16))
|
||||
|
||||
(list (lambda (file algo hash)
|
||||
;; Files served by 'guix publish' are accessible under a single
|
||||
;; hash algorithm.
|
||||
(string-append "http://mirror.hydra.gnu.org/file/"
|
||||
(string-append "https://mirror.hydra.gnu.org/file/"
|
||||
file "/" (symbol->string algo) "/"
|
||||
(bytevector->nix-base32-string hash)))
|
||||
(lambda (file algo hash)
|
||||
;; 'tarballs.nixos.org' supports several algorithms.
|
||||
(string-append "http://tarballs.nixos.org/"
|
||||
(string-append "https://tarballs.nixos.org/"
|
||||
(symbol->string algo) "/"
|
||||
(bytevector->nix-base32-string hash)))))
|
||||
(bytevector->nix-base32-string hash)))
|
||||
(lambda (file algo hash)
|
||||
;; Software Heritage usually archives VCS history rather than
|
||||
;; tarballs, but tarballs are sometimes available (and can be
|
||||
;; explicitly stored there.) For example, see
|
||||
;; <https://archive.softwareheritage.org/api/1/content/sha256:92d0fa1c311cacefa89853bdb53c62f4110cdfda3820346b59cbd098f40f955e/>.
|
||||
(string-append "https://archive.softwareheritage.org/api/1/content/"
|
||||
(symbol->string algo) ":"
|
||||
(bytevector->base16-string hash) "/raw/")))))
|
||||
|
||||
(define %content-addressed-mirror-file
|
||||
;; Content-addressed mirrors stored in a file.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com>
|
||||
;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
|
||||
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -197,7 +198,7 @@ throughput."
|
|||
(define elapsed
|
||||
(duration->seconds
|
||||
(time-difference (current-time time-monotonic) start-time)))
|
||||
(if (number? size)
|
||||
(if (and (number? size) (not (zero? size)))
|
||||
(let* ((% (* 100.0 (/ transferred size)))
|
||||
(throughput (/ transferred elapsed))
|
||||
(left (format #f " ~a ~a" file
|
||||
|
@ -211,6 +212,9 @@ throughput."
|
|||
(current-terminal-columns))
|
||||
log-port)
|
||||
(force-output log-port))
|
||||
;; If we don't know the total size, the last transfer will have a 0B
|
||||
;; size. Don't display it.
|
||||
(unless (zero? transferred)
|
||||
(let* ((throughput (/ transferred elapsed))
|
||||
(left (format #f " ~a" file))
|
||||
(right (format #f "~a/s ~a | ~a transferred"
|
||||
|
@ -221,7 +225,7 @@ throughput."
|
|||
(display (string-pad-middle left right
|
||||
(current-terminal-columns))
|
||||
log-port)
|
||||
(force-output log-port))))
|
||||
(force-output log-port)))))
|
||||
|
||||
(define %progress-interval
|
||||
;; Default interval between subsequent outputs for rate-limited displays.
|
||||
|
|
|
@ -175,12 +175,16 @@ TARGET, and register them."
|
|||
|
||||
(return *unspecified*)))
|
||||
|
||||
(define* (install-bootloader installer-drv
|
||||
(define* (install-bootloader installer
|
||||
#:key
|
||||
bootcfg bootcfg-file
|
||||
target)
|
||||
"Call INSTALLER-DRV with error handling, in %STORE-MONAD."
|
||||
(with-monad %store-monad
|
||||
"Run INSTALLER, a bootloader installation script, with error handling, in
|
||||
%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
|
||||
"/bootcfg"))
|
||||
(temp-gc-root (string-append gc-root ".new"))
|
||||
|
@ -247,11 +251,11 @@ the ownership of '~a' may be incorrect!~%")
|
|||
(format (lift format %store-monad))
|
||||
(populate (lift2 populate-root-file-system %store-monad)))
|
||||
|
||||
(mlet %store-monad ((bootcfg (lower-object bootcfg)))
|
||||
(mbegin %store-monad
|
||||
;; Copy the closure of BOOTCFG, which includes OS-DIR,
|
||||
;; eventual background image and so on.
|
||||
(maybe-copy
|
||||
(derivation->output-path bootcfg))
|
||||
(maybe-copy (derivation->output-path bootcfg))
|
||||
|
||||
;; Create a bunch of additional files.
|
||||
(format log-port "populating '~a'...~%" target)
|
||||
|
@ -261,7 +265,7 @@ the ownership of '~a' may be incorrect!~%")
|
|||
(install-bootloader bootloader-installer
|
||||
#:bootcfg bootcfg
|
||||
#: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_ "Failing to do that may downgrade your system!~%"))))
|
||||
|
||||
(define (bootloader-installer-derivation installer
|
||||
(define (bootloader-installer-script installer
|
||||
bootloader device target)
|
||||
"Return a file calling INSTALLER gexp with given BOOTLOADER, DEVICE
|
||||
and TARGET arguments."
|
||||
(with-monad %store-monad
|
||||
(gexp->file "bootloader-installer"
|
||||
(scheme-file "bootloader-installer"
|
||||
(with-imported-modules '((gnu build bootloader)
|
||||
(guix build utils))
|
||||
#~(begin
|
||||
(use-modules (gnu build bootloader)
|
||||
(guix build utils)
|
||||
(ice-9 binary-ports))
|
||||
(#$installer #$bootloader #$device #$target))))))
|
||||
(#$installer #$bootloader #$device #$target)))))
|
||||
|
||||
(define* (perform-action action os
|
||||
#:key skip-safety-checks?
|
||||
|
@ -830,6 +833,25 @@ static checks."
|
|||
(define println
|
||||
(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)
|
||||
(maybe-suggest-running-guix-pull))
|
||||
|
||||
|
@ -849,39 +871,16 @@ static checks."
|
|||
#:image-size image-size
|
||||
#:full-boot? full-boot?
|
||||
#: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
|
||||
;; --no-bootloader is passed, because we then use it as a GC root.
|
||||
;; See <http://bugs.gnu.org/21068>.
|
||||
(drvs -> (if (memq action '(init reconfigure))
|
||||
(if (and install-bootloader? bootloader-package)
|
||||
(list sys bootcfg
|
||||
bootloader-package
|
||||
bootloader-installer)
|
||||
(drvs (mapm %store-monad lower-object
|
||||
(if (memq action '(init reconfigure))
|
||||
(if install-bootloader?
|
||||
(list sys bootcfg bootloader-script)
|
||||
(list sys bootcfg))
|
||||
(list sys)))
|
||||
(list sys))))
|
||||
(% (if derivations-only?
|
||||
(return (for-each (compose println derivation-file-name)
|
||||
drvs))
|
||||
|
@ -890,7 +889,7 @@ static checks."
|
|||
|
||||
(if (or dry-run? derivations-only?)
|
||||
(return #f)
|
||||
(begin
|
||||
(let ((bootcfg-file (bootloader-configuration-file bootloader)))
|
||||
(for-each (compose println derivation->output-path)
|
||||
drvs)
|
||||
|
||||
|
@ -899,7 +898,7 @@ static checks."
|
|||
(mbegin %store-monad
|
||||
(switch-to-system os)
|
||||
(mwhen install-bootloader?
|
||||
(install-bootloader bootloader-installer
|
||||
(install-bootloader bootloader-script
|
||||
#:bootcfg bootcfg
|
||||
#:bootcfg-file bootcfg-file
|
||||
#: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,
|
||||
Sink & sink)
|
||||
{
|
||||
|
@ -1276,7 +1288,8 @@ void LocalStore::exportPath(const Path & path, bool sign,
|
|||
args.push_back(secretKey);
|
||||
args.push_back("-in");
|
||||
args.push_back(hashFile);
|
||||
string signature = runProgram(OPENSSL_PATH, true, args);
|
||||
|
||||
string signature = runAuthenticationProgram(args);
|
||||
|
||||
writeString(signature, hashAndWriteSink);
|
||||
|
||||
|
@ -1366,7 +1379,7 @@ Path LocalStore::importPath(bool requireSignature, Source & source)
|
|||
args.push_back("-pubin");
|
||||
args.push_back("-in");
|
||||
args.push_back(sigFile);
|
||||
string hash2 = runProgram(OPENSSL_PATH, true, args);
|
||||
string hash2 = runAuthenticationProgram(args);
|
||||
|
||||
/* Note: runProgram() throws an exception if the signature
|
||||
is invalid. */
|
||||
|
|
|
@ -113,7 +113,6 @@ libstore_a_CPPFLAGS = \
|
|||
-DGUIX_CONFIGURATION_DIRECTORY=\"$(sysconfdir)/guix\" \
|
||||
-DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
|
||||
-DNIX_BIN_DIR=\"$(bindir)\" \
|
||||
-DOPENSSL_PATH="\"guix-authenticate\"" \
|
||||
-DDEFAULT_CHROOT_DIRS="\"\""
|
||||
|
||||
libstore_a_CXXFLAGS = $(AM_CXXFLAGS) \
|
||||
|
@ -168,10 +167,8 @@ nodist_pkglibexec_SCRIPTS += \
|
|||
|
||||
endif BUILD_DAEMON_OFFLOAD
|
||||
|
||||
|
||||
# XXX: It'd be better to hide it in $(pkglibexecdir).
|
||||
nodist_libexec_SCRIPTS = \
|
||||
%D%/scripts/guix-authenticate
|
||||
nodist_pkglibexec_SCRIPTS += \
|
||||
%D%/scripts/authenticate
|
||||
|
||||
# The '.service' files for systemd.
|
||||
systemdservicedir = $(libdir)/systemd/system
|
||||
|
|
|
@ -466,18 +466,6 @@ main (int argc, char *argv[])
|
|||
{
|
||||
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. */
|
||||
settings.substituters.clear ();
|
||||
settings.set ("build-use-substitutes", "true");
|
||||
|
|
Loading…
Reference in New Issue