Merge branch 'master' into core-updates

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

View File

@ -12,6 +12,7 @@
# Copyright © 2018 Nils Gillmann <ng0@n0.is>
# Copyright © 2018 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 \

View File

@ -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

View File

@ -112,7 +112,8 @@ run @code{make install}. To do that, you first need to have an environment
with all the dependencies available (@pxref{Building from Git}), and then
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.}:

View File

@ -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.

View File

@ -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))

View File

@ -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,14 +113,14 @@ otherwise."
(define* (svg->png svg #:key width height)
"Build a PNG of HEIGHT x WIDTH from SVG."
(gexp->derivation "grub-image.png"
(with-imported-modules '((gnu build svg))
(with-extensions (list guile-rsvg guile-cairo)
#~(begin
(use-modules (gnu build svg))
(svg->png #+svg #$output
#:width #$width
#:height #$height))))))
(computed-file "grub-image.png"
(with-imported-modules '((gnu build svg))
(with-extensions (list guile-rsvg guile-cairo)
#~(begin
(use-modules (gnu build svg))
(svg->png #+svg #$output
#:width #$width
#:height #$height))))))
(define* (grub-background-image config #:key (width 1024) (height 768))
"Return the GRUB background image defined in CONFIG with a ratio of
@ -138,15 +130,13 @@ WIDTH/HEIGHT, or #f if none was found."
(= (grub-image-aspect-ratio image) ratio))
(grub-theme-images
(bootloader-theme config)))))
(if image
(svg->png (grub-image-file image)
#:width width #:height height)
(with-monad %store-monad
(return #f)))))
(and image
(svg->png (grub-image-file image)
#: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,9 +184,11 @@ 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
#~(format #$port "
(define image
(grub-background-image config))
(and image
#~(format #$port "
function setup_gfxterm {~a}
# Set 'root' to the partition that contains /gnu/store.
@ -213,14 +205,14 @@ else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi~%"
#$setup-gfxterm-body
#$(grub-root-search store-device font-file)
#$(setup-gfxterm config font-file)
#$(grub-setup-io config)
#$setup-gfxterm-body
#$(grub-root-search store-device font-file)
#$(setup-gfxterm config font-file)
#$(grub-setup-io config)
#$(strip-mount-point store-mount-point image)
#$(theme-colors grub-theme-color-normal)
#$(theme-colors grub-theme-color-highlight))))))
#$(strip-mount-point store-mount-point image)
#$(theme-colors grub-theme-color-normal)
#$(theme-colors grub-theme-color-highlight))))
;;;
@ -331,36 +323,36 @@ 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))
#:system system
#:port #~port)))
(define builder
#~(call-with-output-file #$output
(lambda (port)
(format port
"# This file was generated from your GuixSD configuration. Any changes
(define sugar
(eye-candy config
(menu-entry-device (first all-entries))
(menu-entry-device-mount-point (first all-entries))
#:system system
#:port #~port))
(define builder
#~(call-with-output-file #$output
(lambda (port)
(format port
"# This file was generated from your GuixSD configuration. Any changes
# will be lost upon reconfiguration.
")
#$sugar
(format port "
#$sugar
(format port "
set default=~a
set timeout=~a~%"
#$(bootloader-configuration-default-entry config)
#$(bootloader-configuration-timeout config))
#$@(map menu-entry->gexp all-entries)
#$(bootloader-configuration-default-entry config)
#$(bootloader-configuration-timeout config))
#$@(map menu-entry->gexp all-entries)
#$@(if (pair? old-entries)
#~((format port "
#$@(if (pair? old-entries)
#~((format port "
submenu \"GNU system, old configurations...\" {~%")
#$@(map menu-entry->gexp old-entries)
(format port "}~%"))
#~()))))
#$@(map menu-entry->gexp old-entries)
(format port "}~%"))
#~()))))
(gexp->derivation "grub.cfg" builder)))
(computed-file "grub.cfg" builder))

View File

@ -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

View File

@ -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)

View File

@ -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 \

View File

@ -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")

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

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

View File

@ -15,6 +15,7 @@
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 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")))))

View File

@ -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))))

View File

@ -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)

View File

@ -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/")

View File

@ -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

View File

@ -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)

View File

@ -5606,8 +5606,8 @@ 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")
(string-append out "/share/xonotic"))
(symlink (string-append data "/share/xonotic")
(string-append out "/share/xonotic"))
#t)))
(add-after 'install-binaries 'wrap-binaries
(lambda* (#:key outputs inputs #:allow-other-keys)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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")

View File

@ -400,8 +400,8 @@ It has been modified to remove all non-free binary blobs.")
;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; 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)))

View File

@ -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

View File

@ -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

View File

@ -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 _

View File

@ -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")

View File

@ -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

View File

@ -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)))

View File

@ -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

View File

@ -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

View File

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

View File

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

View File

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

View File

@ -1,16 +1,28 @@
From 26cac62fe0154cf65c06faaee10805531e9dade8 Mon Sep 17 00:00:00 2001
From bc3b353cb2f26cf10aa5c5caebddf6d3d5b1e318 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
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(-)
Makefile | 11 ++++++-----
configure | 13 ++++++++++++-
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
@ -19,12 +31,12 @@ index 4a8ce17..d94a6d5 100644
PATH_TESTS=$(PATH_BASE)/tests
-PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect
+PATH_INSTALL=$(PREFIX)/lib/ocaml/bisect
# 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)")
@ -33,22 +45,22 @@ index 4a8ce17..d94a6d5 100644
MODULES_MLPACK=$(PROJECT_NAME).mlpack
MODULES_MLPACK_PP=$(PROJECT_NAME)_pp.mlpack
@@ -80,11 +81,11 @@ veryclean: clean
rm -f $(PATH_OCAMLDOC)/*.html $(PATH_OCAMLDOC)/*.css
rm -f $(PATH_OCAMLDOC)/*.html $(PATH_OCAMLDOC)/*.css
install: FORCE
- cp $(PATH_BUILD)/src/report/report.byte $(PATH_OCAML_PREFIX)/bin/bisect-report; \
+ cp $(PATH_BUILD)/src/report/report.byte $(PREFIX)/bin/bisect-report; \
if [ "$(PPX)" = "TRUE" ]; then \
if [ "$(PPX)" = "TRUE" ]; then \
- cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PATH_OCAML_PREFIX)/bin; \
+ cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(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); \
if [ -x "$(PATH_OCAMLFIND)" ]; then \
$(PATH_OCAMLFIND) query $(PROJECT_NAME) && $(PATH_OCAMLFIND) remove $(PROJECT_NAME) || true; \
$(PATH_OCAMLFIND) install $(PROJECT_NAME) META -optional \
fi; \
- (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,47 +91,193 @@ 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
@@ -57,6 +63,9 @@ if [ "$no_camlp4" = "TRUE" -a "$ppx" = "FALSE" ]; then
exit 1
fi
+# prefix default value
+test -z $prefix && prefix=$ocaml_prefix
+
# 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

View File

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

View File

@ -2381,48 +2381,22 @@ logic-free templating system Mustache.")
(define-public python-joblib
(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

View File

@ -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+)))

View File

@ -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)))

View File

@ -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+))))

View File

@ -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

View File

@ -127,23 +127,21 @@
;;;
;;; 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="
(cond ((uuid? root-device)
(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
;; what (gnu build linux-boot) expects for the
;; '--root' kernel command-line option.
(uuid->string (uuid-bytevector root-device)
'dce))
((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))
;; Note: Always use the DCE format because that's
;; what (gnu build linux-boot) expects for the
;; '--root' kernel command-line option.
(uuid->string (uuid-bytevector root-device)
'dce))
((file-system-label? root-device)
(file-system-label->string root-device))
(else root-device)))
#~(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
(boot-parameters
(inherit params)
(kernel-arguments (bootable-kernel-arguments kernel-arguments
system root)))
#f)))
(root (boot-parameters-root-device params)))
(boot-parameters
(inherit params)
(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
#:linux (operating-system-kernel os)
#:linux-modules
(operating-system-initrd-modules os)
#:mapped-devices mapped-devices)))
(return (file-append initrd "/initrd"))))
(let ((initrd (make-initrd boot-file-systems
#:linux (operating-system-kernel os)
#:linux-modules
(operating-system-initrd-modules os)
#:mapped-devices mapped-devices)))
(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
(operating-system-bootloader os)))
(bootloader-name -> (bootloader-name bootloader))
(label -> (kernel->boot-label (operating-system-kernel os))))
(return (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)
(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))))))
(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))))
(boot-parameters
(label label)
(root-device root-device)
(kernel (operating-system-kernel-file os))
(kernel-arguments
(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)))))
(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)

View File

@ -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

View File

@ -189,14 +189,12 @@ 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)
(base-initrd file-systems
#:on-error 'backtrace
#:linux linux
#:linux-modules %base-initrd-modules
#:qemu-networking? #t))))
(let ((initrd (or initrd
(base-initrd file-systems
#:on-error 'backtrace
#:linux linux
#:linux-modules %base-initrd-modules
#:qemu-networking? #t))))
(define builder
;; Code that launches the VM that evaluates EXP.
@ -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,56 +625,54 @@ 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)
;; 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.
(initrd (lambda (file-systems . rest)
(apply (operating-system-initrd os)
file-systems
#:volatile-root? #t
rest)))
(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.
(initrd (lambda (file-systems . rest)
(apply (operating-system-initrd os)
file-systems
#:volatile-root? #t
rest)))
(bootloader (if (string=? "iso9660" file-system-type)
(bootloader-configuration
(inherit (operating-system-bootloader os))
(bootloader grub-mkrescue-bootloader))
(operating-system-bootloader os)))
(bootloader (if (string=? "iso9660" file-system-type)
(bootloader-configuration
(inherit (operating-system-bootloader os))
(bootloader grub-mkrescue-bootloader))
(operating-system-bootloader os)))
;; Force our own root file system.
(file-systems (cons (file-system
(mount-point "/")
(device root-uuid)
(type file-system-type))
file-systems-to-keep)))))
(mlet* %store-monad ((os-drv (operating-system-derivation os))
(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
#:register-closures? #t
#:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))
#:inputs `(("system" ,os-drv)
("bootcfg" ,bootcfg)))
(qemu-image #:name name
#:os-drv os-drv
#:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))
#:disk-image-size disk-image-size
#:disk-image-format "raw"
#:file-system-type file-system-type
#:file-system-label root-label
#:file-system-uuid root-uuid
#:copy-inputs? #t
#:register-closures? #t
#:inputs `(("system" ,os-drv)
("bootcfg" ,bootcfg)))))))
;; Force our own root file system.
(file-systems (cons (file-system
(mount-point "/")
(device root-uuid)
(type file-system-type))
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 os
#:register-closures? #t
#:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))
#:inputs `(("system" ,os)
("bootcfg" ,bootcfg)))
(qemu-image #:name name
#:os os
#:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))
#:disk-image-size disk-image-size
#:disk-image-format "raw"
#:file-system-type file-system-type
#:file-system-label root-label
#:file-system-uuid root-uuid
#:copy-inputs? #t
#:register-closures? #t
#:inputs `(("system" ,os)
("bootcfg" ,bootcfg))))))
(define* (system-qemu-image os
#:key
@ -702,30 +698,28 @@ of the GNU system as described by OS."
'dce)))
(let ((os (operating-system (inherit os)
;; Assume we have an initrd with the whole QEMU shebang.
(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
;; it works regardless of how the image is used ("qemu -hda",
;; Xen, etc.).
(file-systems (cons (file-system
(mount-point "/")
(device root-uuid)
(type file-system-type))
file-systems-to-keep)))))
(mlet* %store-monad
((os-drv (operating-system-derivation os))
(bootcfg (operating-system-bootcfg os)))
(qemu-image #:os-drv os-drv
#:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))
#:disk-image-size disk-image-size
#:file-system-type file-system-type
#:file-system-uuid root-uuid
#:inputs `(("system" ,os-drv)
("bootcfg" ,bootcfg))
#:copy-inputs? #t))))
;; Force our own root file system. Refer to it by UUID so that
;; it works regardless of how the image is used ("qemu -hda",
;; Xen, etc.).
(file-systems (cons (file-system
(mount-point "/")
(device root-uuid)
(type file-system-type))
file-systems-to-keep))))
(bootcfg (operating-system-bootcfg os)))
(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)
("bootcfg" ,bootcfg))
#:copy-inputs? #t)))
;;;
@ -829,25 +823,26 @@ bootloader refers to: OS kernel, initrd, bootloader data, etc."
;; Use a fixed UUID to improve determinism.
(operating-system-uuid os 'dce))
(mlet* %store-monad ((os-drv (operating-system-derivation os))
(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.
;; This is more than needed (we only need the kernel, initrd, GRUB for its
;; font, and the background image), but it's hard to filter that.
(qemu-image #:os-drv os-drv
#:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))
#:disk-image-size disk-image-size
#:file-system-uuid root-uuid
#:inputs (if full-boot?
`(("bootcfg" ,bootcfg))
'())
(define bootcfg
(operating-system-bootcfg os))
;; XXX: Passing #t here is too slow, so let it off by default.
#:register-closures? #f
#:copy-inputs? full-boot?)))
;; XXX: When FULL-BOOT? is true, we end up creating an image that contains
;; 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 os
#:bootcfg-drv bootcfg
#:bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os))
#:disk-image-size disk-image-size
#:file-system-uuid root-uuid
#:inputs (if full-boot?
`(("bootcfg" ,bootcfg))
'())
;; XXX: Passing #t here is too slow, so let it off by default.
#:register-closures? #f
#:copy-inputs? full-boot?))
(define* (common-qemu-options image shared-fs)
"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

View File

@ -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"

View File

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

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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))

View File

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

View File

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

View File

@ -49,37 +49,40 @@
'())
,@configure-flags)))
(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"
(string-append (assoc-ref inputs "findlib")
"/lib/ocaml/site-lib")
file build-flags))))))
(apply invoke "ocaml" "-I"
(string-append (assoc-ref inputs "findlib")
"/lib/ocaml/site-lib")
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"
(string-append (assoc-ref inputs "findlib")
"/lib/ocaml/site-lib")
file test-target)))))))
(invoke "ocaml" "-I"
(string-append (assoc-ref inputs "findlib")
"/lib/ocaml/site-lib")
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'

View File

@ -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)
;; Files served by 'guix publish' are accessible under a single
;; hash algorithm.
(string-append "http://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/"
(symbol->string algo) "/"
(bytevector->nix-base32-string 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 "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 "https://tarballs.nixos.org/"
(symbol->string algo) "/"
(bytevector->nix-base32-string hash)))
(lambda (file algo hash)
;; Software Heritage usually archives VCS history rather than
;; tarballs, but tarballs are sometimes available (and can be
;; explicitly stored there.) For example, see
;; <https://archive.softwareheritage.org/api/1/content/sha256:92d0fa1c311cacefa89853bdb53c62f4110cdfda3820346b59cbd098f40f955e/>.
(string-append "https://archive.softwareheritage.org/api/1/content/"
(symbol->string algo) ":"
(bytevector->base16-string hash) "/raw/")))))
(define %content-addressed-mirror-file
;; Content-addressed mirrors stored in a file.

View 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,17 +212,20 @@ throughput."
(current-terminal-columns))
log-port)
(force-output log-port))
(let* ((throughput (/ transferred elapsed))
(left (format #f " ~a" file))
(right (format #f "~a/s ~a | ~a transferred"
(byte-count->string throughput)
(seconds->string elapsed)
(byte-count->string transferred))))
(erase-current-line log-port)
(display (string-pad-middle left right
(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"
(byte-count->string throughput)
(seconds->string elapsed)
(byte-count->string transferred))))
(erase-current-line log-port)
(display (string-pad-middle left right
(current-terminal-columns))
log-port)
(force-output log-port)))))
(define %progress-interval
;; Default interval between subsequent outputs for rate-limited displays.

View File

@ -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,21 +251,21 @@ the ownership of '~a' may be incorrect!~%")
(format (lift format %store-monad))
(populate (lift2 populate-root-file-system %store-monad)))
(mbegin %store-monad
;; Copy the closure of BOOTCFG, which includes OS-DIR,
;; eventual background image and so on.
(maybe-copy
(derivation->output-path bootcfg))
(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))
;; Create a bunch of additional files.
(format log-port "populating '~a'...~%" target)
(populate os-dir target)
;; Create a bunch of additional files.
(format log-port "populating '~a'...~%" target)
(populate os-dir target)
(mwhen install-bootloader?
(install-bootloader bootloader-installer
#:bootcfg bootcfg
#:bootcfg-file bootcfg-file
#:target target)))))
(mwhen install-bootloader?
(install-bootloader bootloader-installer
#:bootcfg bootcfg
#:bootcfg-file bootcfg-file
#: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
bootloader device target)
(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"
(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))))))
(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)))))
(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)
(list sys bootcfg))
(list sys)))
(drvs (mapm %store-monad lower-object
(if (memq action '(init reconfigure))
(if install-bootloader?
(list sys bootcfg bootloader-script)
(list sys bootcfg))
(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 "/"))))

View File

@ -1222,6 +1222,18 @@ static void checkSecrecy(const Path & path)
}
static std::string runAuthenticationProgram(const Strings & args)
{
/* Use the 'authenticate' script from 'LIBEXECDIR/guix' or just
'LIBEXECDIR', depending on whether we're uninstalled or not. */
const bool installed = getenv("GUIX_UNINSTALLED") == NULL;
const string program = settings.nixLibexecDir
+ (installed ? "/guix" : "")
+ "/authenticate";
return runProgram(program, false, args);
}
void LocalStore::exportPath(const Path & path, bool sign,
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. */

View File

@ -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

View File

@ -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");