aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am4
-rw-r--r--config-daemon.ac16
-rw-r--r--doc.am61
-rw-r--r--doc/guix.texi117
-rw-r--r--emacs.am2
-rw-r--r--gnu-system.am2
-rw-r--r--gnu/build/activation.scm5
-rw-r--r--gnu/packages/algebra.scm6
-rw-r--r--gnu/packages/audio.scm313
-rw-r--r--gnu/packages/bioinformatics.scm116
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/commencement.scm4
-rw-r--r--gnu/packages/databases.scm46
-rw-r--r--gnu/packages/disk.scm37
-rw-r--r--gnu/packages/emacs.scm59
-rw-r--r--gnu/packages/fonts.scm22
-rw-r--r--gnu/packages/fontutils.scm60
-rw-r--r--gnu/packages/freedesktop.scm5
-rw-r--r--gnu/packages/gcc.scm2
-rw-r--r--gnu/packages/gnome.scm45
-rw-r--r--gnu/packages/gtk.scm29
-rw-r--r--gnu/packages/guile.scm7
-rw-r--r--gnu/packages/image.scm105
-rw-r--r--gnu/packages/kodi.scm2
-rw-r--r--gnu/packages/libusb.scm5
-rw-r--r--gnu/packages/linux.scm36
-rw-r--r--gnu/packages/mail.scm6
-rw-r--r--gnu/packages/maths.scm10
-rw-r--r--gnu/packages/messaging.scm4
-rw-r--r--gnu/packages/mpd.scm33
-rw-r--r--gnu/packages/music.scm167
-rw-r--r--gnu/packages/package-management.scm4
-rw-r--r--gnu/packages/patches/libotr-test-auth-fix.patch15
-rw-r--r--gnu/packages/patches/python-rarfile-fix-tests.patch14
-rw-r--r--gnu/packages/perl.scm26
-rw-r--r--gnu/packages/python.scm237
-rw-r--r--gnu/packages/ruby.scm4
-rw-r--r--gnu/packages/scheme.scm34
-rw-r--r--gnu/packages/statistics.scm89
-rw-r--r--gnu/packages/textutils.scm43
-rw-r--r--gnu/packages/version-control.scm20
-rw-r--r--gnu/services/desktop.scm66
-rw-r--r--gnu/services/xorg.scm9
-rw-r--r--gnu/system/shadow.scm33
-rw-r--r--guix/build-system/gnu.scm17
-rw-r--r--guix/build/download.scm32
-rw-r--r--guix/derivations.scm16
-rw-r--r--guix/gexp.scm10
-rw-r--r--guix/http-client.scm2
-rw-r--r--guix/import/pypi.scm12
-rw-r--r--guix/licenses.scm7
-rw-r--r--guix/scripts/lint.scm7
-rwxr-xr-xguix/scripts/substitute.scm113
-rw-r--r--guix/store.scm8
-rw-r--r--m4/guix.m446
-rw-r--r--nix/nix-daemon/guix-daemon.cc4
-rw-r--r--tests/derivations.scm19
-rw-r--r--tests/gexp.scm24
-rw-r--r--tests/pypi.scm3
-rw-r--r--tests/store.scm6
60 files changed, 1920 insertions, 330 deletions
diff --git a/Makefile.am b/Makefile.am
index 8a5430794a..a9c281d4d1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -421,7 +421,11 @@ include daemon.am
endif BUILD_DAEMON
ACLOCAL_AMFLAGS = -I m4
+
+# Pass an explicit '--localstatedir' so that configure does not error out if
+# it finds an existing installation with a different localstatedir.
AM_DISTCHECK_CONFIGURE_FLAGS = \
+ --localstatedir="$$dc_install_base/var" \
--with-libgcrypt-prefix="$(LIBGCRYPT_PREFIX)" \
--with-libgcrypt-libdir="$(LIBGCRYPT_LIBDIR)" \
--with-nix-prefix="$(NIX_PREFIX)" \
diff --git a/config-daemon.ac b/config-daemon.ac
index c74ec94d31..803eb53699 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -110,6 +110,20 @@ if test "x$guix_build_daemon" = "xyes"; then
dnl Check for <linux/fs.h> (for immutable file support).
AC_CHECK_HEADERS([linux/fs.h])
+ dnl Determine the appropriate default list of substitute URLs.
+ GUILE_MODULE_AVAILABLE([have_gnutls], [(gnutls)])
+ if test "x$have_gnutls" = "xyes"; then
+ guix_substitute_urls="https://mirror.hydra.gnu.org https://hydra.gnu.org"
+ else
+ AC_MSG_WARN([GnuTLS is missing, substitutes will be downloaded in the clear])
+ guix_substitute_urls="http://mirror.hydra.gnu.org http://hydra.gnu.org"
+ fi
+ AC_MSG_CHECKING([for default substitute URLs])
+ AC_MSG_RESULT([$guix_substitute_urls])
+
+ AC_DEFINE_UNQUOTED([GUIX_SUBSTITUTE_URLS], ["$guix_substitute_urls"],
+ [Default list of substitute URLs used by 'guix-daemon'.])
+
dnl Check whether the 'offload' build hook can be built (uses
dnl 'restore-file-set', which requires unbuffered custom binary input
dnl ports from Guile >= 2.0.10.)
@@ -126,6 +140,8 @@ if test "x$guix_build_daemon" = "xyes"; then
GUIX_TEST_ROOT="$ac_cv_guix_test_root"
AC_SUBST([GUIX_TEST_ROOT])
+ GUIX_CHECK_LOCALSTATEDIR
+
AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
[chmod +x nix/scripts/list-runtime-roots])
AC_CONFIG_FILES([nix/scripts/substitute],
diff --git a/doc.am b/doc.am
index 127029c1ca..8356ffa2dd 100644
--- a/doc.am
+++ b/doc.am
@@ -98,45 +98,48 @@ dvi-local: ps-local
## Man pages. ##
## ----------- ##
+# The man pages are generated using GNU Help2man. In makefiles rules they
+# depend not on the binary, but on the source files. This usage allows a
+# manual page to be generated by the maintainer and included in the
+# distribution without requiring the end-user to have 'help2man' installed.
+# They are built in $(srcdir) like info manuals.
+
sub_commands_mans = \
- doc/guix-archive.1 \
- doc/guix-build.1 \
- doc/guix-challenge.1 \
- doc/guix-download.1 \
- doc/guix-edit.1 \
- doc/guix-environment.1 \
- doc/guix-gc.1 \
- doc/guix-hash.1 \
- doc/guix-import.1 \
- doc/guix-lint.1 \
- doc/guix-package.1 \
- doc/guix-publish.1 \
- doc/guix-pull.1 \
- doc/guix-refresh.1 \
- doc/guix-size.1 \
- doc/guix-system.1
+ $(srcdir)/doc/guix-archive.1 \
+ $(srcdir)/doc/guix-build.1 \
+ $(srcdir)/doc/guix-challenge.1 \
+ $(srcdir)/doc/guix-download.1 \
+ $(srcdir)/doc/guix-edit.1 \
+ $(srcdir)/doc/guix-environment.1 \
+ $(srcdir)/doc/guix-gc.1 \
+ $(srcdir)/doc/guix-hash.1 \
+ $(srcdir)/doc/guix-import.1 \
+ $(srcdir)/doc/guix-lint.1 \
+ $(srcdir)/doc/guix-package.1 \
+ $(srcdir)/doc/guix-publish.1 \
+ $(srcdir)/doc/guix-pull.1 \
+ $(srcdir)/doc/guix-refresh.1 \
+ $(srcdir)/doc/guix-size.1 \
+ $(srcdir)/doc/guix-system.1
dist_man1_MANS = \
- doc/guix.1 \
+ $(srcdir)/doc/guix.1 \
$(sub_commands_mans)
-# Man pages are generated using GNU help2man.
gen_man = \
LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN) \
$(HELP2MANFLAGS)
HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME)
-# Note: Do not depend on 'scripts/guix' since that would trigger a rebuild
-# even for people building from a tarball.
-doc/guix.1: $(sub_commands_mans)
+$(srcdir)/doc/guix.1: scripts/guix.in $(sub_commands_mans)
-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
-# Note: The dependency on $(GOBJECTS) is meant to force these docs to be made
-# only after all Guile modules have been compiled. The 'case' ensures the man
-# pages are only generated if the corresponding script source has been
-# changed.
-doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
+# The 'case' ensures the man pages are only generated if the corresponding
+# source script (the first prerequisite) has been changed. The $(GOBJECTS)
+# prerequisite is solely meant to force these docs to be made only after all
+# Guile modules have been compiled.
+$(srcdir)/doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
-@case '$?' in \
*$<*) $(AM_V_P) && set -x || echo " HELP2MAN $@"; \
$(gen_man) --output="$@" "guix $*";; \
@@ -145,11 +148,9 @@ doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
if BUILD_DAEMON
-dist_man1_MANS += doc/guix-daemon.1
+dist_man1_MANS += $(srcdir)/doc/guix-daemon.1
-# Note: Do not depend on 'guix-daemon' since that would trigger a rebuild even
-# for people building from a tarball.
-doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
+$(srcdir)/doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
endif
diff --git a/doc/guix.texi b/doc/guix.texi
index 112c32939d..913545f1a7 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -448,8 +448,8 @@ Directories,,, texinfo, GNU Texinfo}, for more details on changing the
Info search path.)
@item
-To use substitutes from @code{hydra.gnu.org} (@pxref{Substitutes}),
-authorize them:
+To use substitutes from @code{hydra.gnu.org} or one of its mirrors
+(@pxref{Substitutes}), authorize them:
@example
# guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub
@@ -527,6 +527,14 @@ following packages are also needed:
C++11 standard.
@end itemize
+When configuring Guix on a system that already has a Guix installation,
+be sure to specify the same state directory as the existing installation
+using the @code{--localstatedir} option of the @command{configure}
+script (@pxref{Directory Variables, @code{localstatedir},, standards,
+GNU Coding Standards}). The @command{configure} script protects against
+unintended misconfiguration of @var{localstatedir} so you do not
+inadvertently corrupt your store (@pxref{The Store}).
+
When a working installation of @url{http://nixos.org/nix/, the Nix package
manager} is available, you
can instead configure Guix with @code{--disable-daemon}. In that case,
@@ -912,8 +920,9 @@ remote procedure call (@pxref{The Store}).
@item --substitute-urls=@var{urls}
@anchor{daemon-substitute-urls}
Consider @var{urls} the default whitespace-separated list of substitute
-source URLs. When this option is omitted, @indicateurl{http://hydra.gnu.org}
-is used.
+source URLs. When this option is omitted,
+@indicateurl{https://mirror.hydra.gnu.org https://hydra.gnu.org} is used
+(@code{mirror.hydra.gnu.org} is a mirror of @code{hydra.gnu.org}).
This means that substitutes may be downloaded from @var{urls}, as long
as they are signed by a trusted signature (@pxref{Substitutes}).
@@ -1730,7 +1739,8 @@ your system has unpatched security vulnerabilities.
@cindex security
@cindex digital signatures
-To allow Guix to download substitutes from @code{hydra.gnu.org}, you
+To allow Guix to download substitutes from @code{hydra.gnu.org} or a
+mirror thereof, you
must add its public key to the access control list (ACL) of archive
imports, using the @command{guix archive} command (@pxref{Invoking guix
archive}). Doing so implies that you trust @code{hydra.gnu.org} to not
@@ -2199,7 +2209,7 @@ served by @code{hydra.gnu.org} to @file{/tmp/emacs}:
@example
$ wget -O - \
- http://hydra.gnu.org/nar/@dots{}-emacs-24.5 \
+ https://hydra.gnu.org/nar/@dots{}-emacs-24.5 \
| bunzip2 | guix archive -x /tmp/emacs
@end example
@@ -2943,9 +2953,9 @@ Sub-directories in the store are referred to as @dfn{store items} or
sometimes @dfn{store paths}. The store has an associated database that
contains information such as the store paths referred to by each store
path, and the list of @emph{valid} store items---results of successful
-builds. This database resides in @file{/var/guix/db} (or under whatever
-state directory was specified @i{via} @option{--localstatedir} at
-configure time).
+builds. This database resides in @file{@var{localstatedir}/guix/db},
+where @var{localstatedir} is the state directory specified @i{via}
+@option{--localstatedir} at configure time, usually @file{/var}.
The store is @emph{always} accessed by the daemon on behalf of its clients
(@pxref{Invoking guix-daemon}). To manipulate the store, clients
@@ -3065,7 +3075,8 @@ a derivation is the @code{derivation} procedure:
@var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
[#:recursive? #f] [#:inputs '()] [#:env-vars '()] @
[#:system (%current-system)] [#:references-graphs #f] @
- [#:allowed-references #f] [#:leaked-env-vars #f] [#:local-build? #f] @
+ [#:allowed-references #f] [#:disallowed-references #f] @
+ [#:leaked-env-vars #f] [#:local-build? #f] @
[#:substitutable? #t]
Build a derivation with the given arguments, and return the resulting
@code{<derivation>} object.
@@ -3083,7 +3094,9 @@ path is exported in the build environment in the corresponding file, in
a simple text format.
When @var{allowed-references} is true, it must be a list of store items
-or outputs that the derivation's output may refer to.
+or outputs that the derivation's output may refer to. Likewise,
+@var{disallowed-references}, if true, must be a list of things the
+outputs may @emph{not} refer to.
When @var{leaked-env-vars} is true, it must be a list of strings
denoting environment variables that are allowed to ``leak'' from the
@@ -3140,6 +3153,7 @@ is now deprecated in favor of the much nicer @code{gexp->derivation}.
[#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
[#:recursive? #f] [#:env-vars '()] [#:modules '()] @
[#:references-graphs #f] [#:allowed-references #f] @
+ [#:disallowed-references #f] @
[#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f]
Return a derivation that executes Scheme expression @var{exp} as a
builder for derivation @var{name}. @var{inputs} must be a list of
@@ -3163,8 +3177,9 @@ terminates by passing the result of @var{exp} to @code{exit}; thus, when
@code{%guile-for-build} fluid is used instead.
See the @code{derivation} procedure for the meaning of
-@var{references-graphs}, @var{allowed-references}, @var{local-build?},
-and @var{substitutable?}.
+@var{references-graphs}, @var{allowed-references},
+@var{disallowed-references}, @var{local-build?}, and
+@var{substitutable?}.
@end deffn
@noindent
@@ -3655,6 +3670,7 @@ information about monads.)
[#:recursive? #f] [#:env-vars '()] [#:modules '()] @
[#:module-path @var{%load-path}] @
[#:references-graphs #f] [#:allowed-references #f] @
+ [#:disallowed-references #f] @
[#:leaked-env-vars #f] @
[#:script-name (string-append @var{name} "-builder")] @
[#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f]
@@ -3692,6 +3708,8 @@ text format.
@var{allowed-references} must be either @code{#f} or a list of output names and packages.
In the latter case, the list denotes store items that the result is allowed to
refer to. Any reference to another store item will lead to a build error.
+Similarly for @var{disallowed-references}, which can list items that must not be
+referenced by the outputs.
The other arguments are as for @code{derivation} (@pxref{Derivations}).
@end deffn
@@ -3981,6 +3999,9 @@ This means that substitutes may be downloaded from @var{urls}, provided
they are signed by a key authorized by the system administrator
(@pxref{Substitutes}).
+When @var{urls} is the empty string, substitutes are effectively
+disabled.
+
@item --no-substitutes
Do not use substitutes for build products. That is, always build things
locally instead of allowing downloads of pre-built binaries
@@ -4294,7 +4315,7 @@ but you are actually on an @code{x86_64} machine:
@example
$ guix build --log-file gdb -s mips64el-linux
-http://hydra.gnu.org/log/@dots{}-gdb-7.10
+https://hydra.gnu.org/log/@dots{}-gdb-7.10
@end example
You can freely access a huge library of build logs!
@@ -5704,11 +5725,6 @@ requires familiarity with GNU/Linux (see the following subsections to
get a feel of what that means.)
@item
-The system does not yet provide full GNOME and KDE desktops. Xfce and
-Enlightenment are available, though, if graphical desktop environments
-are your thing, as well as a number of X11 window managers.
-
-@item
Support for the Logical Volume Manager (LVM) is missing.
@item
@@ -5718,6 +5734,11 @@ Few system services are currently supported out-of-the-box
@item
More than 3,000 packages are available, but you may
occasionally find that a useful package is missing.
+
+@item
+GNOME, Xfce, and Enlightenment are available (@pxref{Desktop Services}),
+as well as a number of X11 window managers. However, some graphical
+applications may be missing, as well as KDE.
@end itemize
You have been warned! But more than a disclaimer, this is an invitation
@@ -7474,7 +7495,8 @@ makes the good ol' XlockMore usable.
The @code{(gnu services desktop)} module provides services that are
usually useful in the context of a ``desktop'' setup---that is, on a
machine running a graphical display server, possibly with graphical user
-interfaces, etc.
+interfaces, etc. It also defines services that provide specific desktop
+environments like GNOME and XFCE.
To simplify things, the module defines a variable containing the set of
services that users typically expect on a machine with a graphical
@@ -7499,8 +7521,57 @@ The @var{%desktop-services} variable can be used as the @code{services}
field of an @code{operating-system} declaration (@pxref{operating-system
Reference, @code{services}}).
-The actual service definitions provided by @code{(gnu services dbus)}
-and @code{(gnu services desktop)} are described below.
+Additionally, the @code{gnome-desktop-service} and
+@code{xfce-desktop-service} procedures can add GNOME and/or XFCE to a
+system. To ``add GNOME'' means that system-level services like the
+backlight adjustment helpers and the power management utilities are
+added to the system, extending @code{polkit} and @code{dbus}
+appropriately, allowing GNOME to operate with elevated privileges on a
+limited number of special-purpose system interfaces. Additionally,
+adding a service made by @code{gnome-desktop-service} adds the GNOME
+metapackage to the system profile. Likewise, adding the XFCE service
+not only adds the @code{xfce} metapackage to the system profile, but it
+also gives the Thunar file manager the ability to open a ``root-mode''
+file management window, if the user authenticates using the
+administrator's password via the standard polkit graphical interface.
+
+@deffn {Scheme Procedure} gnome-desktop-service
+Return a service that adds the @code{gnome} package to the system
+profile, and extends polkit with the actions from
+@code{gnome-settings-daemon}.
+@end deffn
+
+@deffn {Scheme Procedure} xfce-desktop-service
+Return a service that adds the @code{xfce} package to the system profile,
+and extends polkit with the abilit for @code{thunar} to manipulate the
+file system as root from within a user session, after the user has
+authenticated with the administrator's password.
+@end deffn
+
+Because the GNOME and XFCE desktop services pull in so many packages,
+the default @code{%desktop-services} variable doesn't include either of
+them by default. To add GNOME or XFCE, just @code{cons} them onto
+@code{%desktop-services} in the @code{services} field of your
+@code{operating-system}:
+
+@example
+(use-modules (gnu))
+(use-service-modules desktop)
+(operating-system
+ ...
+ ;; cons* adds items to the list given as its last argument.
+ (services (cons* (gnome-desktop-service)
+ (xfce-desktop-service)
+ %desktop-services))
+ ...)
+@end example
+
+These desktop environments will then be available as options in the
+graphical login window.
+
+The actual service definitions included in @code{%desktop-services} and
+provided by @code{(gnu services dbus)} and @code{(gnu services desktop)}
+are described below.
@deffn {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()]
Return a service that runs the ``system bus'', using @var{dbus}, with
@@ -10080,7 +10151,7 @@ are created using @code{define-record-type*}, you can write a succint
@var{body} that evaluates to the new service parameters by using the
@code{inherit} feature that @code{define-record-type*} provides.
-@xref{Using the Configuration System} for example usage.
+@xref{Using the Configuration System}, for example usage.
@end deffn
diff --git a/emacs.am b/emacs.am
index 9276c12f36..1897e2e956 100644
--- a/emacs.am
+++ b/emacs.am
@@ -64,7 +64,7 @@ $(AUTOLOADS): $(ELFILES)
$(AM_V_EMACS)$(EMACS) --batch --eval \
"(let ((backup-inhibited t) \
(generated-autoload-file \
- (expand-file-name \"$(AUTOLOADS)\" \"$(srcdir)\"))) \
+ (expand-file-name \"$(AUTOLOADS)\" \"$(builddir)\"))) \
(update-directory-autoloads \
(expand-file-name \"emacs\" \"$(srcdir)\")))"
diff --git a/gnu-system.am b/gnu-system.am
index d11baa7f88..c819b5ab97 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -582,6 +582,7 @@ dist_patch_DATA = \
gnu/packages/patches/libevent-dns-tests.patch \
gnu/packages/patches/libmtp-devices.patch \
gnu/packages/patches/liboop-mips64-deplibs-fix.patch \
+ gnu/packages/patches/libotr-test-auth-fix.patch \
gnu/packages/patches/liblxqt-include.patch \
gnu/packages/patches/libmad-armv7-thumb-pt1.patch \
gnu/packages/patches/libmad-armv7-thumb-pt2.patch \
@@ -699,6 +700,7 @@ dist_patch_DATA = \
gnu/packages/patches/python-disable-ssl-test.patch \
gnu/packages/patches/python-fix-tests.patch \
gnu/packages/patches/python-ipython-inputhook-ctype.patch \
+ gnu/packages/patches/python-rarfile-fix-tests.patch \
gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
gnu/packages/patches/python-configobj-setuptools.patch \
gnu/packages/patches/python-paste-remove-website-test.patch \
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index 352e736050..ae614994d6 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
@@ -91,7 +91,8 @@
(mkdir-p home)
(for-each (lambda (file)
(let ((target (string-append home "/" file)))
- (copy-file (string-append directory "/" file) target)
+ (copy-recursively (string-append directory "/" file)
+ target)
(make-file-writable target)))
files)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 85ec61c1b1..11fb460df5 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -67,7 +67,7 @@ multiplication routines such as Toom–Cook and the FFT.")
(define-public cm
(package
(name "cm")
- (version "0.2.1")
+ (version "0.3")
(source (origin
(method url-fetch)
(uri (string-append
@@ -75,7 +75,7 @@ multiplication routines such as Toom–Cook and the FFT.")
version ".tar.gz"))
(sha256
(base32
- "1r5dx5qy0ka2sq26n9jll9iy4sjqg0jp5r3jnbjhpgxvmj8jbhq8"))))
+ "1nf5kr0nqmhbzrsrinky18z0ighjpsmb5cr8zyg8jf04bfbyrfmc"))))
(build-system gnu-build-system)
(propagated-inputs
`(("mpfrcx" ,mpfrcx)
@@ -89,7 +89,7 @@ imaginary quadratic number fields and of elliptic curves with complex
multiplication via floating point approximations. It consists of libraries
that can be called from within a C program and of executable command
line applications.")
- (license license:gpl2+)
+ (license license:gpl3+)
(home-page "http://cm.multiprecision.org/")))
(define-public fplll
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 7040e7958c..ca438f8077 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -406,6 +406,319 @@ language and software synthesizer.")
ALSA PCM devices.")
(license license:gpl2+)))
+(define-public amb-plugins
+ (package
+ (name "amb-plugins")
+ (version "0.8.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/AMB-plugins-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
+ (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-and-tool-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "Makefile"
+ (("/usr/lib/ladspa")
+ (string-append (assoc-ref outputs "out") "/lib/ladspa"))
+ (("/usr/bin/install") (which "install"))
+ (("/bin/rm") "#"))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "LADSPA ambisonics plugins")
+ (description
+ "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
+used within Ardour. Features include: mono and stereo to B-format panning,
+horizontal rotator, square, hexagon and cube decoders.")
+ (license license:gpl2+)))
+
+(define-public mcp-plugins
+ (package
+ (name "mcp-plugins")
+ (version "0.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/MCP-plugins-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
+ (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") (assoc-ref outputs "out")))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
+ (description
+ "This package provides various LADSPA plugins. @code{cs_chorus} and
+@code{cs_phaser} provide chorus and phaser effects, respectively;
+@code{mvclpf24} provides four implementations of the low-pass filter used in
+vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
+high-pass filter by Robert Moog. The filters attempt to accurately emulate
+the non-linear circuit elements of their original analog counterparts.")
+ (license license:gpl2+)))
+
+(define-public rev-plugins
+ (package
+ (name "rev-plugins")
+ (version "0.7.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/REV-plugins-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
+ (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") (assoc-ref outputs "out")))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "LADSPA reverb plugin")
+ (description
+ "This package provides a stereo reverb LADSPA plugin based on the
+well-known greverb.")
+ (license license:gpl2+)))
+
+(define-public fil-plugins
+ (package
+ (name "fil-plugins")
+ (version "0.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/FIL-plugins-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
+ (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") (assoc-ref outputs "out")))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "LADSPA four-band parametric equalizer plugin")
+ (description
+ "This package provides a LADSPA plugin for a four-band parametric
+equalizer. Each section has an active/bypass switch, frequency, bandwidth and
+gain controls. There is also a global bypass switch and gain control.
+
+The 2nd order resonant filters are implemented using a Mitra-Regalia style
+lattice filter, which is stable even while parameters are being changed.
+
+All switches and controls are internally smoothed, so they can be used 'live'
+without any clicks or zipper noises. This makes this plugin suitable for use
+in systems that allow automation of plugin control ports, such as Ardour, or
+for stage use.")
+ (license license:gpl2+)))
+
+(define-public ste-plugins
+ (package
+ (name "ste-plugins")
+ (version "0.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/STE-plugins-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
+ (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") (assoc-ref outputs "out")))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "LADSPA stereo width plugin")
+ (description
+ "This package provides a LADSPA plugin to manipulate the stereo width of
+audio signals.")
+ (license license:gpl2+)))
+
+(define-public vco-plugins
+ (package
+ (name "vco-plugins")
+ (version "0.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/VCO-plugins-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
+ (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") (assoc-ref outputs "out"))
+ (("/bin/cp") (which "cp")))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "LADSPA plugin for synthesizer oscillators")
+ (description
+ "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
+
+@enumerate
+@item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
+@item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
+@item Rec-VCO, a square / rectange oscillator
+@end enumerate\n
+
+All oscillators are low-pass filtered to provide waveforms similar to the
+output of analog synthesizers such as the Moog Voyager.")
+ (license license:gpl2+)))
+
+(define-public wah-plugins
+ (package
+ (name "wah-plugins")
+ (version "0.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/WAH-plugins-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
+ (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") (assoc-ref outputs "out")))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "LADSPA Autowah effect plugin")
+ (description
+ "This package provides a LADSPA plugin for a Wah effect with envelope
+follower.")
+ (license license:gpl2+)))
+
+(define-public g2reverb
+ (package
+ (name "g2reverb")
+ (version "0.7.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://kokkinizita.linuxaudio.org"
+ "/linuxaudio/downloads/g2reverb-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
+ (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") (assoc-ref outputs "out")))
+ #t)))))
+ (home-page "http://kokkinizita.linuxaudio.org")
+ (synopsis "LADSPA stereo reverb plugin")
+ (description
+ "This package provides a LADSPA plugin for a stereo reverb effect.")
+ (license license:gpl2+)))
+
(define-public fluidsynth
(package
(name "fluidsynth")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 4dd2ee6f92..281bd1f427 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -579,10 +579,11 @@ confidence to have in an alignment.")
(snippet
`(begin
;; Remove bundled boost, pigz, zlib, and .git directory
- ;; FIXME: also remove bundled sources for google-sparsehash,
- ;; murmurhash3, kmc once packaged.
+ ;; FIXME: also remove bundled sources for murmurhash3 and
+ ;; kmc once packaged.
(delete-file-recursively "boost")
(delete-file-recursively "pigz")
+ (delete-file-recursively "google-sparsehash")
(delete-file-recursively "zlib")
(delete-file-recursively ".git")
#t))))
@@ -632,6 +633,7 @@ confidence to have in an alignment.")
(inputs
`(("openmpi" ,openmpi)
("boost" ,boost)
+ ("sparsehash" ,sparsehash)
("pigz" ,pigz)
("zlib" ,zlib)))
(supported-systems '("x86_64-linux"))
@@ -919,6 +921,54 @@ also includes an interface for tabix.")
(define-public python2-pysam
(package-with-python2 python-pysam))
+(define-public cd-hit
+ (package
+ (name "cd-hit")
+ (version "4.6.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/weizhongli/cdhit"
+ "/releases/download/V" version
+ "/cd-hit-v" version "-2016-0304.tar.gz"))
+ (sha256
+ (base32
+ "15db0hq38yyifwqx9b6l34z14jcq576dmjavhj8a426c18lvnhp3"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:make-flags
+ ;; Executables are copied directly to the PREFIX.
+ (list (string-append "PREFIX=" (assoc-ref %outputs "out") "/bin"))
+ #:phases
+ (modify-phases %standard-phases
+ ;; No "configure" script
+ (delete 'configure)
+ ;; Remove sources of non-determinism
+ (add-after 'unpack 'be-timeless
+ (lambda _
+ (substitute* "cdhit-utility.c++"
+ ((" \\(built on \" __DATE__ \"\\)") ""))
+ (substitute* "cdhit-common.c++"
+ (("__DATE__") "\"0\"")
+ (("\", %s, \" __TIME__ \"\\\\n\", date") ""))
+ #t))
+ ;; The "install" target does not create the target directory
+ (add-before 'install 'create-target-dir
+ (lambda* (#:key outputs #:allow-other-keys)
+ (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
+ #t)))))
+ (inputs
+ `(("perl" ,perl)))
+ (home-page "http://weizhongli-lab.org/cd-hit/")
+ (synopsis "Cluster and compare protein or nucleotide sequences")
+ (description
+ "CD-HIT is a program for clustering and comparing protein or nucleotide
+sequences. CD-HIT is designed to be fast and handle extremely large
+databases.")
+ ;; The manual says: "It can be copied under the GNU General Public License
+ ;; version 2 (GPLv2)."
+ (license license:gpl2)))
+
(define-public clipper
(package
(name "clipper")
@@ -958,6 +1008,46 @@ also includes an interface for tabix.")
"CLIPper is a tool to define peaks in CLIP-seq datasets.")
(license license:gpl2)))
+(define-public codingquarry
+ (package
+ (name "codingquarry")
+ (version "2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://sourceforge/codingquarry/CodingQuarry_v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0115hkjflsnfzn36xppwf9h9avfxlavr43djqmshkkzbgjzsz60i"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; no "check" target
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (doc (string-append out "/share/doc/codingquarry")))
+ (install-file "INSTRUCTIONS.pdf" doc)
+ (copy-recursively "QuarryFiles"
+ (string-append out "/QuarryFiles"))
+ (install-file "CodingQuarry" bin)
+ (install-file "CufflinksGTF_to_CodingQuarryGFF3.py" bin)))))))
+ (inputs `(("openmpi" ,openmpi)))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "QUARRY_PATH")
+ (files '("QuarryFiles")))))
+ (native-inputs `(("python" ,python-2))) ; Only Python 2 is supported
+ (synopsis "Fungal gene predictor")
+ (description "CodingQuarry is a highly accurate, self-training GHMM fungal
+gene predictor designed to work with assembled, aligned RNA-seq transcripts.")
+ (home-page "https://sourceforge.net/projects/codingquarry/")
+ (license license:gpl3+)))
+
(define-public couger
(package
(name "couger")
@@ -3847,6 +3937,28 @@ barplots or heatmaps.")
packages.")
(license license:artistic2.0)))
+(define-public r-dnacopy
+ (package
+ (name "r-dnacopy")
+ (version "1.44.0")
+ (source (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "DNAcopy" version))
+ (sha256
+ (base32
+ "1c1px4rbr36xx929hp59k7ca9k5ab66qmn8k63fk13278ncm6h66"))))
+ (properties
+ `((upstream-name . "DNAcopy")))
+ (build-system r-build-system)
+ (inputs
+ `(("gfortran" ,gfortran)))
+ (home-page "https://bioconductor.org/packages/DNAcopy")
+ (synopsis "Implementation of a circular binary segmentation algorithm")
+ (description "This package implements the circular binary segmentation (CBS)
+algorithm to segment DNA copy number data and identify genomic regions with
+abnormal copy number.")
+ (license license:gpl2+)))
+
(define-public r-s4vectors
(package
(name "r-s4vectors")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index ae67988d71..a930eabaf6 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -202,7 +202,7 @@ interface, for the Transmission BitTorrent daemon.")
(define-public aria2
(package
(name "aria2")
- (version "1.20.0")
+ (version "1.21.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/tatsuhiro-t/aria2/"
@@ -210,7 +210,7 @@ interface, for the Transmission BitTorrent daemon.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1l4gzz3yr0cl6a9xdy7843c5sb7afyq0i80wi2hasfpfdx5k95mz"))))
+ "1035rzx9y7qv4p7cv04f461343dxha7ikprch059x2fci8n5yp12"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-libaria2")
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 80a83aa73b..6dfe5c9cb7 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -871,10 +871,10 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
("libc-debug" ,glibc-final "debug")))))
(define-public gcc-toolchain-4.8
- (gcc-toolchain gcc-final))
+ (gcc-toolchain gcc-4.8))
(define-public gcc-toolchain-4.9
- (gcc-toolchain gcc-4.9))
+ (gcc-toolchain gcc-final))
(define-public gcc-toolchain-5
(gcc-toolchain gcc-5))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 25c1e6a7df..6612e37aa0 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -28,6 +28,7 @@
(define-module (gnu packages databases)
#:use-module (gnu packages)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages perl)
#:use-module (gnu packages language)
#:use-module (gnu packages linux)
@@ -132,16 +133,19 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(define-public mysql
(package
(name "mysql")
- (version "5.6.25")
+ (version "5.7.11")
(source (origin
(method url-fetch)
- (uri (string-append
- "http://dev.mysql.com/get/Downloads/MySQL-"
- (version-major+minor version) "/"
- name "-" version ".tar.gz"))
+ (uri (list (string-append
+ "http://dev.mysql.com/get/Downloads/MySQL-"
+ (version-major+minor version) "/"
+ name "-" version ".tar.gz")
+ (string-append
+ "http://downloads.mysql.com/archives/get/file/"
+ name "-" version ".tar.gz")))
(sha256
(base32
- "1gbz5i1z3nswpq3q8f477vrx7g15j8n41pyb94k0jfnkhc5rq1qm"))))
+ "03hzd2ikabxhh5ch2yvml2nks2wpv3qbkqmx3520in6khypwgy2l"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
@@ -167,16 +171,11 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
"-DINSTALL_SQLBENCHDIR=")
#:phases (modify-phases %standard-phases
(add-after
- 'install 'strip-extra-references
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Strip references to GCC and other build-time
- ;; dependencies.
- (let ((out (assoc-ref outputs "out")))
- (for-each remove-store-references
- (list (string-append out "/bin/mysqlbug")
- (string-append
- out "/share/mysql/docs/INFO_BIN")))
- #t)))
+ 'unpack 'patch-boost-version
+ (lambda _
+ ;; Mysql wants boost-1.59.0 specifically
+ (substitute* "cmake/boost.cmake"
+ (("59") "60"))))
(add-after
'install 'remove-extra-binaries
(lambda* (#:key outputs #:allow-other-keys)
@@ -191,10 +190,11 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
`(("bison" ,bison)
("perl" ,perl)))
(inputs
- `(("libaio" ,libaio)
+ `(("boost" ,boost)
+ ("libaio" ,libaio)
+ ("ncurses" ,ncurses)
("openssl" ,openssl)
- ("zlib" ,zlib)
- ("ncurses" ,ncurses)))
+ ("zlib" ,zlib)))
(home-page "http://www.mysql.com/")
(synopsis "Fast, easy to use, and popular database")
(description
@@ -206,7 +206,7 @@ Language.")
(define-public mariadb
(package
(name "mariadb")
- (version "10.0.23")
+ (version "10.1.12")
(source (origin
(method url-fetch)
(uri (string-append "https://downloads.mariadb.org/f/"
@@ -214,7 +214,7 @@ Language.")
name "-" version ".tar.gz"))
(sha256
(base32
- "0x52gfxk7zr84al83x62s4gh7mbngahy1svafdkbwd18i5lysvhm"))))
+ "1rzlc2ns84x540asbkgdp9562haxhlszfpdqh64i9pz4q1m4cpvr"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
@@ -274,14 +274,14 @@ as a drop-in replacement of MySQL.")
(define-public postgresql
(package
(name "postgresql")
- (version "9.3.11")
+ (version "9.5.1")
(source (origin
(method url-fetch)
(uri (string-append "http://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.bz2"))
(sha256
(base32
- "08ba951nfiy516flaw352shj1zslxg4ryx3w5k0adls1r682l8ix"))))
+ "1ljvijaja5zy4i5b1450drbj8m3fcm3ly1zzaakp75x30s2rsc3b"))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline)
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index b9240a392a..c7aa0dc556 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -99,7 +100,7 @@ tables, and it understands a variety of different formats.")
(define-public ddrescue
(package
(name "ddrescue")
- (version "1.20")
+ (version "1.21")
(source
(origin
(method url-fetch)
@@ -107,7 +108,7 @@ tables, and it understands a variety of different formats.")
version ".tar.lz"))
(sha256
(base32
- "1gb0ak2c47nass7qdf9pnfrshcb38c318z1fx5v5v1k7l6qr7yc3"))))
+ "1b71hb42lh33y9843nd1mxlwkk9qh9ajvnz6ivzd1jq9lav4x7ph"))))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
(synopsis "Data recovery utility")
@@ -171,3 +172,35 @@ transport), SCSI and ATAPI tape drives, and SCSI enclosures. This utility can
also send commands associated with starting and stopping the media, loading
and unloading removable media and some other housekeeping functions.")
(license bsd-3)))
+
+(define-public idle3-tools
+ (package
+ (name "idle3-tools")
+ (version "0.9.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/idle3-tools/idle3-tools-"
+ version ".tgz"))
+ (sha256
+ (base32
+ "00ia7xq9yldxyl9gz0mr4xa568nav14p0fnv82f2rbbkg060cy4p"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ;no test suite
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))
+ #:make-flags (list "CC=gcc"
+ (string-append "manprefix=")
+ (string-append "DESTDIR="
+ (assoc-ref %outputs "out")))))
+ (home-page "http://idle3-tools.sourceforge.net")
+ (synopsis "Change or disable Western Digital hard drives' Idle3 timer")
+ (description
+ "Idle3-tools provides a utility to get, set, or disable the Idle3 timer
+present in many Western Digital hard drives. This timer is part of the
+\"IntelliPark\" feature that stops the disk when not in use. Unfortunately,
+the default timer setting is not well suited to Linux or other *nix systems,
+and can dramatically shorten the lifespan of the drive if left unchecked.")
+ (license gpl3+)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index c9fbfcf1f1..f53f73bb8a 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1018,44 +1018,47 @@ single buffer.")
(arguments
`(#:tests? #f ; there are no tests
#:modules ((guix build gnu-build-system)
+ ((guix build emacs-build-system) #:prefix emacs:)
(guix build utils)
(guix build emacs-utils))
#:imported-modules (,@%gnu-build-system-modules
+ (guix build emacs-build-system)
(guix build emacs-utils))
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'enter-dir (lambda _ (chdir "server") #t))
- (add-before
- 'configure 'autogen
- (lambda _
- (zero? (system* "bash" "autogen.sh"))))
- (add-before
- 'build 'patch-variables
- (lambda* (#:key outputs #:allow-other-keys)
- (with-directory-excursion "../lisp"
- ;; Set path to epdfinfo program.
- (emacs-substitute-variables "pdf-info.el"
- ("pdf-info-epdfinfo-program"
- (string-append (assoc-ref outputs "out")
- "/bin/epdfinfo")))
- ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
- ;; upgrading" that pdf-tools tries to perform.
- (emacs-substitute-variables "pdf-tools.el"
- ("pdf-tools-handle-upgrades" '())))))
- (add-after
- 'install 'install-lisp
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((target (string-append (assoc-ref outputs "out")
- "/share/emacs/site-lisp/")))
- (for-each (lambda (file)
- (install-file file target))
- (find-files "../lisp" "^(pdf|tab).*\\.elc?"))
- (emacs-byte-compile-directory target)
- (emacs-generate-autoloads "pdf-tools" target)))))))
+ ;; Build server side using 'gnu-build-system'.
+ (add-after 'unpack 'enter-server-dir
+ (lambda _ (chdir "server") #t))
+ (add-before 'configure 'autogen
+ (lambda _
+ (zero? (system* "bash" "autogen.sh"))))
+
+ ;; Build emacs side using 'emacs-build-system'.
+ (add-after 'compress-documentation 'enter-lisp-dir
+ (lambda _ (chdir "../lisp") #t))
+ (add-after 'enter-lisp-dir 'emacs-patch-variables
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Set path to epdfinfo program.
+ (emacs-substitute-variables "pdf-info.el"
+ ("pdf-info-epdfinfo-program"
+ (string-append (assoc-ref outputs "out")
+ "/bin/epdfinfo")))
+ ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
+ ;; upgrading" that pdf-tools tries to perform.
+ (emacs-substitute-variables "pdf-tools.el"
+ ("pdf-tools-handle-upgrades" '()))))
+ (add-after 'emacs-patch-variables 'emacs-install
+ (assoc-ref emacs:%standard-phases 'install))
+ (add-after 'emacs-install 'emacs-build
+ (assoc-ref emacs:%standard-phases 'build))
+ (add-after 'emacs-install 'emacs-make-autoloads
+ (assoc-ref emacs:%standard-phases 'make-autoloads)))))
(native-inputs `(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)
("emacs" ,emacs-no-x)))
+ (propagated-inputs
+ `(("let-alist" ,let-alist)))
(inputs `(("poppler" ,poppler)
("cairo" ,cairo)
("glib" ,glib)
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 01c5eef7ff..f07e052936 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
@@ -25,6 +25,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages fonts)
+ #:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
@@ -237,6 +238,25 @@ package provides the TrueType (TTF) files.")
(license:x11-style
"http://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"))))
+(define-public font-cantarell
+ (package
+ (name "font-abattis-cantarell")
+ (version "0.0.24")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnome/sources/cantarell-fonts/"
+ (version-major+minor version)
+ "/cantarell-fonts-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0r4jnc2x9yncf40lixjb1pqgpq8rzbi2fz33pshlqzjgx2d69bcw"))))
+ (build-system gnu-build-system)
+ (home-page "https://wiki.gnome.org/Projects/CantarellFonts")
+ (synopsis "Cantarell sans-serif typeface")
+ (description "The Cantarell font family is a contemporary Humanist
+sans-serif designed for on-screen reading. It is used by GNOME@tie{}3.")
+ (license license:silofl1.1)))
+
(define-public font-gnu-freefont-ttf
(package
(name "font-gnu-freefont-ttf")
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 8d546339bf..34f391e5fa 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -94,8 +94,12 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
(string-append "--with-default-fonts="
(assoc-ref %build-inputs "gs-fonts")
"/share/fonts")
+
;; register fonts from user profile
+ ;; TODO: Add /run/current-system/profile/share/fonts and remove
+ ;; the skeleton that works around it from 'default-skeletons'.
"--with-add-fonts=~/.guix-profile/share/fonts"
+
;; python is not actually needed
"PYTHON=false")
#:phases
@@ -337,37 +341,51 @@ definitions.")
(define-public fontforge
(package
(name "fontforge")
- (version "20120731-b") ;aka 1.0
+ (version "20150824")
(source (origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/fontforge/fontforge_full-"
- version ".tar.bz2"))
+ (uri (string-append
+ "https://github.com/fontforge/fontforge/releases/download/"
+ version "/fontforge-" version ".tar.gz"))
(sha256 (base32
- "1dhg0i2pf76j40cb9g1wzpag21fgarpjaad0hdbk27i1zz588q8v"))))
+ "0gfcm8yn1d30giqhdwbchnfnspcqypqdzrxlhqhwy1i18wgl0v2v"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Make builds bit-reproducible by using fixed date strings.
+ '(substitute* "configure"
+ (("^FONTFORGE_MODTIME=.*$")
+ "FONTFORGE_MODTIME=\"1458399002\"\n")
+ (("^FONTFORGE_MODTIME_STR=.*$")
+ "FONTFORGE_MODTIME_STR=\"15:50 CET 19-Mar-2016\"\n")
+ (("^FONTFORGE_VERSIONDATE=.*$")
+ "FONTFORGE_VERSIONDATE=\"20160319\"\n")))))
(build-system gnu-build-system)
- ;; TODO: Add python for scripting support.
- (inputs `(("gettext" ,gnu-gettext)
- ("libtiff" ,libtiff)
- ("libjpeg" ,libjpeg)
- ("libpng" ,libpng)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs `(("cairo" ,cairo)
+ ("fontconfig" ,fontconfig) ;dlopen'd
+ ("freetype" ,freetype)
+ ("gettext" ,gnu-gettext)
("giflib" ,giflib) ;needs giflib 4.*
- ("libxml2" ,libxml2)
- ("libX11" ,libx11)
- ("libXi" ,libxi)
+ ("glib" ,glib) ;needed for pango detection
("libICE" ,libice)
("libSM" ,libsm)
- ("freetype" ,freetype)
- ("potrace" ,potrace)
+ ("libX11" ,libx11)
+ ("libXi" ,libxi)
+ ("libjpeg" ,libjpeg)
+ ("libltdl" ,libltdl)
+ ("libpng" ,libpng)
("libspiro" ,libspiro)
- ("zlib" ,zlib)
- ("cairo" ,cairo)
- ("fontconfig" ,fontconfig) ;dlopen'd
+ ("libtiff" ,libtiff)
("libuninameslist" ,libuninameslist)
+ ("libxft" ,libxft)
+ ("libxml2" ,libxml2)
("pango" ,pango)
- ("glib" ,glib))) ;needed for pango detection
+ ("potrace" ,potrace)
+ ("python" ,python)
+ ("zlib" ,zlib)))
(arguments
- '(#:configure-flags `("--enable-double")
- #:tests? #f
+ '(#:tests? #f
#:phases
(alist-cons-before
'configure 'patch-configure
@@ -407,5 +425,5 @@ definitions.")
"FontForge allows you to create and modify postscript, truetype and
opentype fonts. You can save fonts in many different outline formats, and
generate bitmaps.")
- (license license:bsd-3)
+ (license license:gpl3+)
(home-page "http://fontforge.org/")))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index f5d88e5c0c..972eafc669 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -142,14 +142,14 @@ the freedesktop.org XDG Base Directory specification.")
(define-public elogind
(package
(name "elogind")
- (version "219.13")
+ (version "219.14")
(source (origin
(method url-fetch)
(uri (string-append "https://wingolog.org/pub/" name "/"
name "-" version ".tar.xz"))
(sha256
(base32
- "0swwsgm28radjxf0s05a907wf0n524lckdya0rm3kqw6gy1hiax2"))
+ "1jckc4wx199n1q4r4fv43ibjs6nlq91s39w9r78ilk1z383m1hcx"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -365,6 +365,7 @@ Analysis and Reporting Technology) functionality.")
"doc")) ;5 MiB of gtk-doc HTML
(arguments
`(#:tests? #f ; requiring system message dbus
+ #:disallowed-references ("doc") ;enforce separation of "doc"
#:configure-flags
(list "--disable-man"
"--localstatedir=/var"
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 73c6d488fb..1df5150ab3 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -354,6 +354,8 @@ Go. It also includes runtime support libraries for these languages.")
"1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))
(patches (list (search-patch "gcc-5.0-libvtv-runpath.patch")))))))
+;; Note: When changing the default gcc version, update
+;; the gcc-toolchain-* definitions accordingly.
(define-public gcc gcc-4.9)
(define-public (make-libstdc++ gcc)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index a26b609c19..eebb547de3 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -108,6 +108,7 @@
#:use-module (gnu packages cdrom)
#:use-module (gnu packages samba)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages fonts)
#:use-module (srfi srfi-1))
(define-public brasero
@@ -3794,6 +3795,46 @@ such as gzip tarballs.")
(sha256
(base32
"0icajbzqf5llvp5s8nafwkhwz6a6jmwn4hhs81bk0bpzawyq4zdk"))))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Use elogind instead of systemd.
+ (substitute* "configure"
+ (("libsystemd-login >= 183 libsystemd-daemon libsystemd-journal")
+ "libelogind")
+ (("systemd") "elogind"))
+ (substitute* "gnome-session/gsm-systemd.c"
+ (("#include <systemd/sd-login.h>")
+ "#include <elogind/sd-login.h>"))
+ ;; Remove uses of the systemd journal.
+ (substitute* "gnome-session/main.c"
+ (("#ifdef HAVE_SYSTEMD") "#if 0"))
+ (substitute* "gnome-session/gsm-manager.c"
+ (("#ifdef HAVE_SYSTEMD") "#if 0"))
+ #t))
+ (add-after 'install 'wrap-gnome-session
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Make sure 'gnome-session' finds the 'gsettings' program.
+ (let ((glib (assoc-ref inputs "glib:bin"))
+ (out (assoc-ref outputs "out")))
+ (wrap-program (string-append out "/bin/gnome-session")
+ `("PATH" ":" prefix (,(string-append glib "/bin"))))
+ #t)))
+ (add-after 'install 'disable-hardware-acceleration-check
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Do not abort if hardware acceleration is missing. This allows
+ ;; GNOME to run in QEMU and on low-end devices.
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* (string-append out
+ "/share/xsessions/gnome.desktop")
+ (("gnome-session")
+ "gnome-session --disable-acceleration-check"))
+ #t))))
+
+ #:configure-flags
+ '("--enable-elogind")))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
@@ -3801,7 +3842,8 @@ such as gzip tarballs.")
("intltool" ,intltool)
("xsltproc" ,libxslt)))
(inputs
- `(("gnome-desktop" ,gnome-desktop)
+ `(("elogind" ,elogind)
+ ("gnome-desktop" ,gnome-desktop)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gtk+" ,gtk+)
("json-glib" ,json-glib)
@@ -4803,6 +4845,7 @@ software that do not provide their own configuration interface.")
;; TODO: Add more packages according to:
;; <https://packages.debian.org/jessie/gnome-core>.
`(("adwaita-icon-theme" ,adwaita-icon-theme)
+ ("font-cantarell" ,font-cantarell)
("at-spi2-core" ,at-spi2-core)
("dbus" ,dbus)
("dconf" ,dconf)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 1a10e9b551..3bc4b8dc07 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -433,6 +433,35 @@ in the GNOME project.")
(license license:lgpl2.0+)
(home-page "https://developer.gnome.org/gdk-pixbuf/")))
+;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
+;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the
+;; closure size.
+(define-public gdk-pixbuf+svg
+ (package (inherit gdk-pixbuf)
+ (name "gdk-pixbuf+svg")
+ (inputs
+ `(("librsvg" ,librsvg)
+ ,@(package-inputs gdk-pixbuf)))
+ (arguments
+ '(#:configure-flags '("--with-x11")
+ #:tests? #f ; tested by the gdk-pixbuf package already
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'register-svg-loader
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (librsvg (assoc-ref inputs "librsvg"))
+ (loaders
+ (append
+ (find-files out "^libpixbufloader-.*\\.so$")
+ (find-files librsvg "^libpixbufloader-.*\\.so$")))
+ (gdk-pixbuf-query-loaders
+ (string-append out "/bin/gdk-pixbuf-query-loaders")))
+ (zero? (apply system* `(,gdk-pixbuf-query-loaders
+ "--update-cache" ,@loaders)))))))))
+ (synopsis
+ "GNOME image loading and manipulation library, with SVG support")))
+
(define-public at-spi2-core
(package
(name "at-spi2-core")
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 882a62d09f..fe043cba0b 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -275,14 +275,14 @@ without requiring the source code to be rewritten.")
(define-public artanis
(package
(name "artanis")
- (version "0.1.0")
+ (version "0.1.2")
(source (origin
(method url-fetch)
(uri (string-append "ftp://alpha.gnu.org/gnu/artanis/artanis-"
version ".tar.gz"))
(sha256
(base32
- "1mc2zy6n9wnn4hzi3zp3jd6b5rlr0lv7fvh800xf4fyrxg0zia4g"))))
+ "19m3ak12cqk8js9d2mdg11kh4fjsq8frfpd10qw75h0zpr5cywpp"))))
(build-system gnu-build-system)
;; TODO: Add guile-dbi and guile-dbd optional dependencies.
(inputs `(("guile" ,guile-2.0)))
@@ -296,7 +296,8 @@ without requiring the source code to be rewritten.")
(dir (string-append out "/share/guile/site/2.0")))
;; Don't use (%site-dir) for site paths.
(list (string-append "MOD_PATH=" dir)
- (string-append "MOD_COMPILED_PATH=" dir)))
+ (string-append "MOD_COMPILED_PATH=" dir)
+ (string-append "DESTDIR=" out)))
#:test-target "test"
#:phases
(modify-phases %standard-phases
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 4b99fb6767..0343e45d6f 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -45,7 +45,6 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (srfi srfi-1))
@@ -547,62 +546,60 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
(home-page "http://freeimage.sourceforge.net")))
(define-public vigra
- (let ((commit "a378732"))
- (package
- (name "vigra")
- (version (string-append "1.10.0-1-" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/ukoethe/vigra.git")
- (commit commit)))
- (file-name (string-append name "-" version))
- (sha256
- (base32
- "0gvbfrnss1vnkmajsv716yy317j4mx5kn1rxrblxqqyghws47jm5"))))
- (build-system cmake-build-system)
- (inputs
- `(("boost" ,boost)
- ("fftw" ,fftw)
- ("fftwf" ,fftwf)
- ("hdf5" ,hdf5)
- ("ilmbase" ,ilmbase) ; propagated by openexr, but needed explicitly
- ; to create a configure-flag
- ("libjpeg" ,libjpeg)
- ("libpng" ,libpng)
- ("libtiff" ,libtiff)
- ("openexr" ,openexr)
- ("python" ,python-2) ; print syntax
- ("python2-numpy" ,python2-numpy)
- ("zlib" ,zlib)))
- (native-inputs
- `(("doxygen" ,doxygen)
- ("python2-nose" ,python2-nose)
- ("python2-sphinx" ,python2-sphinx)))
- (arguments
- `(#:test-target "check"
- #:configure-flags
- (list "-Wno-dev" ; suppress developer mode with lots of warnings
- (string-append "-DVIGRANUMPY_INSTALL_DIR="
- (assoc-ref %outputs "out")
- "/lib/python2.7/site-packages")
- ;; OpenEXR is not enabled by default.
- "-DWITH_OPENEXR=1"
- ;; The header files of ilmbase are not found when included
- ;; by the header files of openexr, and an explicit flag
- ;; needs to be set.
- (string-append "-DCMAKE_CXX_FLAGS=-I"
- (assoc-ref %build-inputs "ilmbase")
- "/include/OpenEXR"))))
- (synopsis "Computer vision library")
- (description
- "VIGRA stands for Vision with Generic Algorithms. It is an image
+ (package
+ (name "vigra")
+ (version "1.11.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/ukoethe/vigra/releases/download/"
+ "Version-1-11-0/vigra-"
+ version "-src.tar.gz"))
+ (sha256 (base32
+ "1jzm79kqiiilvys3b8mlzy9cvmiirrcwsrlg19qd9rza8zipsqb8"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("boost" ,boost)
+ ("fftw" ,fftw)
+ ("fftwf" ,fftwf)
+ ("hdf5" ,hdf5)
+ ("ilmbase" ,ilmbase) ; propagated by openexr, but needed explicitly
+ ; to create a configure-flag
+ ("libjpeg" ,libjpeg)
+ ("libpng" ,libpng)
+ ("libtiff" ,libtiff)
+ ("openexr" ,openexr)
+ ("python" ,python-2) ; print syntax
+ ("python2-numpy" ,python2-numpy)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("doxygen" ,doxygen)
+ ("python2-nose" ,python2-nose)
+ ("python2-sphinx" ,python2-sphinx)))
+ (arguments
+ `(#:test-target "check"
+ #:parallel-build? #f ; parallel builds trigger an ICE
+ #:configure-flags
+ (list "-Wno-dev" ; suppress developer mode with lots of warnings
+ (string-append "-DVIGRANUMPY_INSTALL_DIR="
+ (assoc-ref %outputs "out")
+ "/lib/python2.7/site-packages")
+ ;; OpenEXR is not enabled by default.
+ "-DWITH_OPENEXR=1"
+ ;; The header files of ilmbase are not found when included
+ ;; by the header files of openexr, and an explicit flag
+ ;; needs to be set.
+ (string-append "-DCMAKE_CXX_FLAGS=-I"
+ (assoc-ref %build-inputs "ilmbase")
+ "/include/OpenEXR"))))
+ (synopsis "Computer vision library")
+ (description
+ "VIGRA stands for Vision with Generic Algorithms. It is an image
processing and analysis library that puts its main emphasis on customizable
algorithms and data structures. It is particularly strong for
multi-dimensional image processing.")
- (license license:expat)
- (home-page "https://hci.iwr.uni-heidelberg.de/vigra"))))
+ (license license:expat)
+ (home-page "https://hci.iwr.uni-heidelberg.de/vigra")))
(define-public libwebp
(package
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 5710e1fd48..6975443646 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -113,7 +113,7 @@
(inputs
`(("util-linux" ,util-linux)))
(synopsis "Lightweight universal identifier library")
- (description "CrossGuid is a minimal @acronym{GUID}/@acronym{UUID}
+ (description "CrossGuid is a minimal GUID/UUID
generator library for C++.")
(home-page "https://github.com/graeme-hill/crossguid")
(license license:expat))))
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 266669061e..c3427e7f6f 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -126,14 +127,14 @@ proposed for standardization.")
(define-public gmtp
(package
(name "gmtp")
- (version "1.3.9")
+ (version "1.3.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gmtp/" version
"/gmtp-" version ".tar.gz"))
(sha256
(base32
- "0bdxvi0jf3q870a39xzsaj4qrjwc9b5bgvc95plc7xb6vf2m7zsv"))))
+ "0fyi3pdl2g57vr0p46ip2wwzyap3l0by7iqaqygv0yxfcs79l6xj"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:configure-flags
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index ba0453e71f..d3865fbe66 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -331,13 +331,13 @@ It has been modified to remove all non-free binary blobs.")
(define-public linux-libre-4.4
(package
(inherit linux-libre)
- (version "4.4.5")
+ (version "4.4.6")
(source (origin
(method url-fetch)
(uri (linux-libre-urls version))
(sha256
(base32
- "19yyw6yssyxr9k5y3whgz2p731mb1pnq3xajpv8g01m13cxs32dd"))))
+ "0sf623knc4j23p96r0w1ng725kj45ra50bwix01z5nvl5aqpnsrp"))))
(native-inputs
(let ((conf (kernel-config (or (%current-target-system)
(%current-system))
@@ -2515,3 +2515,35 @@ easy administration.")
;; GPL2+: crc32.c, radix-tree.c, raid6.c, rbtree.c.
;; GPL2: Everything else.
(license (list license:gpl2 license:gpl2+))))
+
+(define-public freefall
+ (package
+ (name "freefall")
+ (version (package-version linux-libre))
+ (source (package-source linux-libre))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'enter-subdirectory
+ (lambda _
+ (chdir "tools/laptop/freefall")))
+ (delete 'configure)
+ (add-before 'build 'increase-timeout
+ (lambda _
+ ;; The default of 2 seconds is too low: it assumes an
+ ;; open lid and AC power without actually checking.
+ (substitute* "freefall.c"
+ (("alarm\\(2\\)") "alarm(5)")))))
+ #:make-flags (list (string-append "PREFIX="
+ (assoc-ref %outputs "out")))
+ #:tests? #f)) ;no tests
+ (home-page (package-home-page linux-libre))
+ (synopsis "Free-fall protection for spinning laptop hard drives")
+ (description
+ "Prevents shock damage to the internal spinning hard drive(s) of some
+HP and Dell laptops. When sudden movement is detected, all input/output
+operations on the drive are suspended and its heads are parked on the ramp,
+where they are less likely to cause damage to the spinning disc. Requires a
+drive that supports the ATA/ATAPI-7 IDLE IMMEDIATE command with unload
+feature, and a laptop with an accelerometer. It has no effect on SSDs.")
+ (license license:gpl2)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 5bc6434424..1022ac7015 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -189,6 +189,7 @@ aliasing facilities to work just as they would on normal mail.")
(build-system gnu-build-system)
(inputs
`(("cyrus-sasl" ,cyrus-sasl)
+ ("gdbm" ,gdbm)
("gpgme" ,gpgme)
("ncurses" ,ncurses)
("openssl" ,openssl)
@@ -198,6 +199,7 @@ aliasing facilities to work just as they would on normal mail.")
"--enable-imap"
"--enable-pop"
"--enable-gpgme"
+ "--enable-hcache" ; for header caching
"--with-ssl"
"--with-sasl"
;; so that mutt does not check whether the path
@@ -289,7 +291,7 @@ and corrections. It is based on a Bayesian filter.")
(define-public offlineimap
(package
(name "offlineimap")
- (version "6.6.1")
+ (version "6.7.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
@@ -297,7 +299,7 @@ and corrections. It is based on a Bayesian filter.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1c2b03856a78ripkpl9jjzj6yzyfb3rlrdnjx300s647l1xx8gxg"))))
+ "0462mal2fxvavxhwjk1a6vsnspx07yniifa687dwg46aplqznin4"))))
(build-system python-build-system)
(native-inputs `(("python" ,python-2)))
(arguments
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index b9ce7fe5b7..6d3d134c20 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
-;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
@@ -565,16 +565,15 @@ ASCII text files using Gmsh's own scripting language.")
'install 'clean-install
;; Try to keep installed files from leaking build directory names.
(lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (fortran (assoc-ref inputs "gfortran")))
+ (let ((out (assoc-ref outputs "out")))
(substitute* (map (lambda (file)
(string-append out "/lib/petsc/conf/" file))
'("petscvariables" "PETScConfig.cmake"))
(((getcwd)) out))
;; Make compiler references point to the store
(substitute* (string-append out "/lib/petsc/conf/petscvariables")
- (("= g(cc|\\+\\+|fortran)" _ suffix)
- (string-append "= " fortran "/bin/g" suffix)))
+ (("= (gcc|g\\+\\+|gfortran)" _ compiler)
+ (string-append "= " (which compiler))))
;; PETSc installs some build logs, which aren't necessary.
(for-each (lambda (file)
(let ((f (string-append out "/lib/petsc/conf/" file)))
@@ -641,6 +640,7 @@ scientific applications modeled by partial differential equations.")
(method url-fetch)
(uri (string-append "http://slepc.upv.es/download/download.php?"
"filename=slepc-" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1pv5iqz2kc8sj49zsabyz4arnfpana8mjrhq31vzgk16xldk3d1a"))))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index dccb6dbc34..5dc4639bb4 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -70,7 +70,9 @@
version ".tar.gz"))
(sha256
(base32
- "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))))
+ "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
+ (patches
+ (list (search-patch "libotr-test-auth-fix.patch")))))
(build-system gnu-build-system)
(propagated-inputs
`(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 5a6377224d..55c09bc897 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -28,6 +28,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 avahi)
#:use-module (gnu packages boost)
#:use-module (gnu packages icu4c)
@@ -40,6 +41,7 @@
#:use-module (gnu packages mp3)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
#:use-module (gnu packages autotools)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages databases)
@@ -240,3 +242,34 @@ information about tracks being played to a scrobbler, such as Libre.FM.")
;; instead.
(home-page "http://mpd.wikia.com/wiki/Client:Mpdscribble")
(license license:gpl2+)))
+
+(define-public python-mpd2
+ (package
+ (name "python-mpd2")
+ (version "0.5.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-mpd2" version))
+ (sha256
+ (base32
+ "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "python" "mpd_test.py")))))))
+ (native-inputs `(("python-mock" ,python-mock)))
+ (home-page "https://github.com/Mic92/python-mpd2")
+ (synopsis "Python MPD client library")
+ (description "Python-mpd2 is a Python library which provides a client
+interface for the Music Player Daemon.")
+ (license license:lgpl3+)
+ (properties `((python2-variant . ,(delay python2-mpd2))))))
+
+(define-public python2-mpd2
+ (let ((mpd2 (package-with-python2
+ (strip-python2-variant python-mpd2))))
+ (package (inherit mpd2)
+ (native-inputs `(("python2-setuptools" ,python2-setuptools)
+ ,@(package-native-inputs mpd2))))))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index fd16537b74..ffee9d6245 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2016 Al McElrath <hello@yrns.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,6 +50,7 @@
#:use-module (gnu packages fltk)
#:use-module (gnu packages fonts)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gettext)
@@ -64,6 +66,7 @@
#:use-module (gnu packages linux) ; for alsa-utils
#:use-module (gnu packages man)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages mpd)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages pdf)
@@ -1134,3 +1137,167 @@ personalized online radio pandora.com. It has configurable keys for playing
and managing stations, can be controlled remotely via fifo, and can run
event-based scripts for scrobbling, notifications, etc.")
(license license:expat)))
+
+(define-public python-mutagen
+ (package
+ (name "python-mutagen")
+ (version "1.31")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "mutagen" version))
+ (sha256
+ (base32
+ "16fnnhspniac2i7qswxafawsh2x2a803hmc6bn9k1zl5fxq1380a"))))
+ (build-system python-build-system)
+ (home-page "https://bitbucket.org/lazka/mutagen")
+ (synopsis "Read and write audio tags")
+ (description "Mutagen is a Python module to handle audio metadata. It
+supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
+Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
+of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
+Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
+APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
+streams on an individual packet/page level.")
+ (license license:gpl2))) ; "later version" never mentioned
+
+(define-public python2-mutagen
+ (package-with-python2 python-mutagen))
+
+(define-public python-musicbrainzngs
+ (package
+ (name "python-musicbrainzngs")
+ (version "0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "musicbrainzngs" version))
+ (sha256
+ (base32
+ "12f48llmdf5rkiqxcb70k2k1dmhm8byq0ifazvlrca8dfnmqh4r8"))))
+ (build-system python-build-system)
+ (home-page "https://python-musicbrainzngs.readthedocs.org/")
+ (synopsis "Python bindings for MusicBrainz NGS webservice")
+ (description "Musicbrainzngs implements Python bindings of the MusicBrainz
+web service. This library can be used to retrieve music metadata from the
+MusicBrainz database.")
+ ;; 'musicbrainzngs/compat.py' is ISC licensed.
+ (license (list license:bsd-2 license:isc))))
+
+(define-public python2-musicbrainzngs
+ (package-with-python2 python-musicbrainzngs))
+
+(define-public python-pyechonest
+ (package
+ (name "python-pyechonest")
+ (version "9.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyechonest" version))
+ (sha256
+ (base32
+ "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/echonest/pyechonest")
+ (synopsis "Python interface to The Echo Nest APIs")
+ (description "Pyechonest is an open source Python library for the Echo Nest
+API. With Pyechonest you have Python access to the entire set of API methods
+including:
+
+@enumerate
+@item artist - search for artists by name, description, or attribute, and get
+back detailed information about any artist including audio, similar artists,
+blogs, familiarity, hotttnesss, news, reviews, urls and video.
+@item song - search songs by artist, title, description, or attribute (tempo,
+duration, etc) and get detailed information back about each song, such as
+hotttnesss, audio_summary, or tracks.
+@item track - upload a track to the Echo Nest and receive summary information
+about the track including key, duration, mode, tempo, time signature along with
+detailed track info including timbre, pitch, rhythm and loudness information.
+@end enumerate\n")
+ (license license:bsd-3)
+ (properties `((python2-variant . ,(delay python2-pyechonest))))))
+
+(define-public python2-pyechonest
+ (package (inherit (package-with-python2
+ (strip-python2-variant python-pyechonest)))
+ (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
+
+(define-public python-pylast
+ (package
+ (name "python-pylast")
+ (version "1.5.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pylast" version))
+ (sha256
+ (base32
+ "10znd9xr1vs2ix519jkz3ccm90zciaddcdr2w2wrrh2jyy3bc59a"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-coverage" ,python-coverage)
+ ("python-mock" ,python-mock)
+ ("python-pep8" ,python-pep8)
+ ("python-pytest" ,python-pytest)
+ ("python-pyflakes" ,python-pyflakes)
+ ("python-pyyaml" ,python-pyyaml)))
+ (propagated-inputs
+ `(("python-six" ,python-six)))
+ (home-page "https://github.com/pylast/pylast")
+ (synopsis "Python interface to Last.fm and Libre.fm")
+ (description "A Python interface to Last.fm and other API-compatible
+websites such as Libre.fm.")
+ (license license:asl2.0)
+ (properties `((python2-variant . ,(delay python2-pylast))))))
+
+(define-public python2-pylast
+ (let ((pylast (package-with-python2
+ (strip-python2-variant python-pylast))))
+ (package (inherit pylast)
+ (native-inputs
+ `(("python2-setuptools" ,python2-setuptools)
+ ,@(package-native-inputs pylast))))))
+
+(define-public beets
+ (package
+ (name "beets")
+ (version "1.3.17")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri name version))
+ (sha256
+ (base32
+ "0yg7sp18sdpszkinhb0bi6yinbn316jy1baxrwiw0m4byrj3rr6c"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2 ; only Python 2 is supported
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'set-HOME
+ (lambda _ (setenv "HOME" (string-append (getcwd) "/tmp")))))))
+ (native-inputs
+ `(("python2-beautifulsoup4" ,python2-beautifulsoup4)
+ ("python2-flask" ,python2-flask)
+ ("python2-setuptools" ,python2-setuptools)
+ ("python2-mock" ,python2-mock)
+ ("python2-mpd2" ,python2-mpd2)
+ ("python2-pathlib" ,python2-pathlib)
+ ("python2-pyxdg" ,python2-pyxdg)
+ ("python2-pyechonest" ,python2-pyechonest)
+ ("python2-pylast" ,python2-pylast)
+ ("python2-rarfile" ,python2-rarfile)
+ ("python2-responses" ,python2-responses)))
+ ;; TODO: Install optional plugins and dependencies.
+ (propagated-inputs
+ `(("python2-enum34" ,python2-enum34)
+ ("python2-jellyfish" ,python2-jellyfish)
+ ("python2-munkres" ,python2-munkres)
+ ("python2-musicbrainzngs" ,python2-musicbrainzngs)
+ ("python2-mutagen" ,python2-mutagen)
+ ("python2-pyyaml" ,python2-pyyaml)
+ ("python2-unidecode" ,python2-unidecode)))
+ (home-page "http://beets.io")
+ (synopsis "Music organizer")
+ (description "The purpose of beets is to get your music collection right
+once and for all. It catalogs your collection, automatically improving its
+metadata as it goes using the MusicBrainz database. Then it provides a variety
+of tools for manipulating and accessing your music.")
+ (license license:expat)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index ac6d84813f..7a7dec3363 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -195,7 +195,7 @@ the Nix package manager.")
;;
;; Note: use a short commit id; when using the long one, the limit on socket
;; file names is exceeded while running the tests.
- (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7"))
+ (let ((commit "71e2065a38cf2641b7eb8c557b0f043f5a42a649"))
(package (inherit guix-0.9.0)
(version (string-append "0.9.0." (string-take commit 7)))
(source (origin
@@ -205,7 +205,7 @@ the Nix package manager.")
(commit commit)))
(sha256
(base32
- "1mbikn6awgx3h08bzk3nz8xrqvxdjsbvzrbn26d6m8nrz96ya53a"))
+ "0wrrywfdc27yxjns55qdz5si49c8zcb9q5557g2kx48dbm7p0dzw"))
(file-name (string-append "guix-" version "-checkout"))))
(arguments
(substitute-keyword-arguments (package-arguments guix-0.9.0)
diff --git a/gnu/packages/patches/libotr-test-auth-fix.patch b/gnu/packages/patches/libotr-test-auth-fix.patch
new file mode 100644
index 0000000000..23b8d8308d
--- /dev/null
+++ b/gnu/packages/patches/libotr-test-auth-fix.patch
@@ -0,0 +1,15 @@
+Initialize the context in 'test_auth_clear'.
+Fixes the test suite on mips64el.
+
+Patch by Mark H Weaver <mhw@netris.org>
+
+--- libotr-4.1.1/tests/unit/test_auth.c.orig 2015-12-25 12:39:45.000000000 -0500
++++ libotr-4.1.1/tests/unit/test_auth.c 2016-03-17 18:53:10.169999706 -0400
+@@ -67,6 +67,7 @@
+ OtrlAuthInfo *auth = &ctx.auth;
+
+ /* API call. */
++ otrl_auth_new(&ctx);
+ otrl_auth_clear(auth);
+
+ ok(auth->authstate == OTRL_AUTHSTATE_NONE &&
diff --git a/gnu/packages/patches/python-rarfile-fix-tests.patch b/gnu/packages/patches/python-rarfile-fix-tests.patch
new file mode 100644
index 0000000000..8ae8894009
--- /dev/null
+++ b/gnu/packages/patches/python-rarfile-fix-tests.patch
@@ -0,0 +1,14 @@
+There is no test.sh, but there are test1.sh and test2.sh.
+
+diff --git a/test/Makefile b/test/Makefile
+index 027bc5f..5383db3 100644
+--- a/test/Makefile
++++ b/test/Makefile
+@@ -1,5 +1,6 @@
+ test:
+- ./test.sh
++ ./test1.sh
++ ./test2.sh
+
+ clean:
+ rm -rf __pycache__
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index b2d96ab398..9bbcc8ffa4 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -5673,6 +5674,31 @@ used to match against text, rather than fetching names from a filesystem. If
you want to do full file globbing use the File::Glob module instead.")
(license (package-license perl))))
+(define-public perl-text-neattemplate
+ (package
+ (name "perl-text-neattemplate")
+ (version "0.1101")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://cpan.metacpan.org/authors/id/R/RU/RUBYKAT/"
+ "Text-NeatTemplate-" version ".tar.gz"))
+ (sha256
+ (base32
+ "129msa57jzxxi2x7z9hgzi48r48y65w77ycfk1w733zz2m8nr8y3"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("perl-module-build" ,perl-module-build)))
+ (home-page
+ "http://search.cpan.org/dist/Text-NeatTemplate")
+ (synopsis "Fast, middleweight template engine")
+ (description
+ "Text::NeatTemplate provides a simple, middleweight but fast
+template engine, for when you need speed rather than complex features,
+yet need more features than simple variable substitution.")
+ (license (package-license perl))))
+
(define-public perl-text-simpletable
(package
(name "perl-text-simpletable")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index af3c60bac9..97a69c3a1b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -8233,3 +8233,240 @@ way.")
(inherit (package-with-python2
(strip-python2-variant python-vobject)))
(native-inputs `(("python2-setuptools" ,python2-setuptools)))))
+
+(define-public python-munkres
+ (package
+ (name "python-munkres")
+ (version "1.0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "munkres" version))
+ (sha256
+ (base32
+ "1i6nf45i0kkzdx6k70giybsqxz4dxsjbrkrfqgjd7znfkf25sjik"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; no test suite
+ (home-page "http://software.clapper.org/munkres/")
+ (synopsis "Implementation of the Munkres algorithm")
+ (description "The Munkres module provides an implementation of the Munkres
+algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
+useful for solving the Assignment Problem.")
+ (license bsd-3)))
+
+(define-public python2-munkres
+ (package-with-python2 python-munkres))
+
+(define-public python-flask
+ (package
+ (name "python-flask")
+ (version "0.10.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "Flask" version))
+ (sha256
+ (base32
+ "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-itsdangerous" ,python-itsdangerous)
+ ("python-jinja2" ,python-jinja2)
+ ("python-werkzeug" ,python-werkzeug)))
+ (home-page "https://github.com/mitsuhiko/flask/")
+ (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
+ (description "Flask is a micro web framework based on the Werkzeug toolkit
+and Jinja2 template engine. It is called a micro framework because it does not
+presume or force a developer to use a particular tool or library.")
+ (license bsd-3)
+ (properties `((python2-variant . ,(delay python2-flask))))))
+
+(define-public python2-flask
+ (package (inherit (package-with-python2
+ (strip-python2-variant python-flask)))
+ (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
+
+(define-public python-cookies
+ (package
+ (name "python-cookies")
+ (version "2.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "cookies" version))
+ (sha256
+ (base32
+ "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
+ (build-system python-build-system)
+ (arguments
+ `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
+ #:tests? #f))
+ (native-inputs
+ `(("python-pytest" ,python2-pytest)))
+ (synopsis "HTTP cookie parser and renderer")
+ (description "A RFC 6265-compliant HTTP cookie parser and renderer in
+Python.")
+ (home-page "https://gitlab.com/sashahart/cookies")
+ (license license:expat)
+ (properties `((python2-variant . ,(delay python2-cookies))))))
+
+(define-public python2-cookies
+ (let ((cookies (package-with-python2
+ (strip-python2-variant python-cookies))))
+ (package (inherit cookies)
+ (native-inputs `(("python2-setuptools" ,python2-setuptools)
+ ,@(package-native-inputs cookies))))))
+
+(define-public python-responses
+ (package
+ (name "python-responses")
+ (version "0.5.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "responses" version))
+ (sha256
+ (base32
+ "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
+ (build-system python-build-system)
+ (arguments
+ `(;; Test suite is not distributed:
+ ;; https://github.com/getsentry/responses/issues/38
+ #:tests? #f))
+ (native-inputs
+ `(("python-cookies" ,python-cookies)
+ ("python-mock" ,python-mock)))
+ (propagated-inputs
+ `(("python-requests" ,python-requests)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/getsentry/responses")
+ (synopsis "Utility for mocking out the `requests` Python library")
+ (description "A utility library for mocking out the `requests` Python
+library.")
+ (license asl2.0)
+ (properties `((python2-variant . ,(delay python2-responses))))))
+
+(define-public python2-responses
+ (let ((responses (package-with-python2
+ (strip-python2-variant python-responses))))
+ (package (inherit responses)
+ (native-inputs `(("python2-setuptools" ,python2-setuptools)
+ ,@(package-native-inputs responses))))))
+
+(define-public python-pathlib
+ (package
+ (name "python-pathlib")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pathlib" version))
+ (sha256
+ (base32
+ "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "python" "./test_pathlib.py")))))))
+ (home-page "https://pathlib.readthedocs.org/")
+ (synopsis "Object-oriented filesystem paths")
+ (description "Pathlib offers a set of classes to handle filesystem paths.
+It offers the following advantages over using string objects:
+
+@enumerate
+@item No more cumbersome use of os and os.path functions. Everything can
+be done easily through operators, attribute accesses, and method calls.
+@item Embodies the semantics of different path types. For example,
+comparing Windows paths ignores casing.
+@item Well-defined semantics, eliminating any inconsistencies or
+ambiguities (forward vs. backward slashes, etc.).
+@end enumerate\n")
+ (license license:expat)))
+
+(define-public python2-pathlib
+ (package-with-python2 python-pathlib))
+
+(define-public python-jellyfish
+ (package
+ (name "python-jellyfish")
+ (version "0.5.3")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "jellyfish" version))
+ (sha256
+ (base32
+ "12bxh8cy9xmvyrjz7aw159nd5pyvb645rkvw4r6bvm4xbvs8gd07"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/jamesturk/jellyfish")
+ (synopsis "Approximate and phonetic matching of strings")
+ (description "Jellyfish uses a variety of string comparison and phonetic
+encoding algorithms to do fuzzy string matching.")
+ (license bsd-2)
+ (properties `((python2-variant . ,(delay python2-jellyfish))))))
+
+(define-public python2-jellyfish
+ (let ((jellyfish (package-with-python2
+ (strip-python2-variant python-jellyfish))))
+ (package (inherit jellyfish)
+ (native-inputs `(("python2-setuptools" ,python2-setuptools)
+ ("python2-unicodecsv" ,python2-unicodecsv)
+ ,@(package-native-inputs jellyfish))))))
+
+(define-public python2-unicodecsv
+ (package
+ (name "python2-unicodecsv")
+ (version "0.14.1")
+ (source (origin
+ (method url-fetch)
+ ;; The test suite is not included in the PyPi release.
+ ;; https://github.com/jdunck/python-unicodecsv/issues/19
+ (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
+ "archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
+ (build-system python-build-system)
+ (arguments
+ `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
+ #:python ,python-2))
+ (native-inputs
+ `(("python2-setuptools" ,python2-setuptools)
+ ("python2-unittest2" ,python2-unittest2)))
+ (home-page "https://github.com/jdunck/python-unicodecsv")
+ (synopsis "Unicode CSV module for Python 2")
+ (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
+module, adding support for Unicode strings.")
+ (license bsd-2)))
+
+(define-public python-rarfile
+ (package
+ (name "python-rarfile")
+ (version "2.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "rarfile" version))
+ (sha256
+ (base32
+ "0d8n1dlpiz7av8dmbp0vclrwl9cnxizr4f2c9xvj1h5nvn480527"))
+ ;; https://github.com/markokr/rarfile/pull/17/
+ (patches (list (search-patch "python-rarfile-fix-tests.patch")))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ ;; Many tests fail, but the installation proceeds.
+ (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
+ (native-inputs
+ `(("which" ,which))) ; required for tests
+ (propagated-inputs
+ `(("libarchive" ,libarchive)))
+ (home-page "https://github.com/markokr/rarfile")
+ (synopsis "RAR archive reader for Python")
+ (description "This is Python module for RAR archive reading. The interface
+is made as zipfile like as possible.")
+ (license isc)))
+
+(define-public python2-rarfile
+ (package-with-python2 python-rarfile))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index a1669d4238..2abb261a45 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -428,13 +428,13 @@ expectations and mocks frameworks.")
(define-public bundler
(package
(name "bundler")
- (version "1.10.6")
+ (version "1.11.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "bundler" version))
(sha256
(base32
- "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
+ "0s37j1hyngc4shq0in8f9y1knjdqkisdg3dd1mfwgq7n1bz8zan7"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; avoid dependency cycles
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 00b573fc0b..f16629397f 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -35,6 +36,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages avahi)
#:use-module (gnu packages libphidget)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libffi)
@@ -309,14 +311,14 @@ mashups, office (web agendas, mail clients, ...), etc.")
(define-public chicken
(package
(name "chicken")
- (version "4.9.0.1")
+ (version "4.10.0")
(source (origin
(method url-fetch)
- (uri (string-append "http://code.call-cc.org/releases/4.9.0/chicken-"
- version ".tar.gz"))
+ (uri (string-append "http://code.call-cc.org/releases/"
+ version "/chicken-" version ".tar.gz"))
(sha256
(base32
- "0598mar1qswfd8hva9nqs88zjn02lzkqd8fzdd21dz1nki1prpq4"))))
+ "16w96jrhb6qf62fgznk53f55yhfv81damghdjn31k5hirnmza1qf"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
@@ -325,11 +327,19 @@ mashups, office (web agendas, mail clients, ...), etc.")
;; No `configure' script; run "make check" after "make install" as
;; prescribed by README.
- #:phases (alist-cons-after
- 'install 'check
- (assoc-ref %standard-phases 'check)
- (fold alist-delete %standard-phases
- '(configure check)))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check)
+ (add-after 'install 'check
+ (assoc-ref %standard-phases 'check))
+ (add-after 'unpack 'disable-broken-tests
+ (lambda _
+ ;; The port tests fail with this error:
+ ;; Error: (line 294) invalid escape-sequence '\x o'
+ (substitute* "tests/runtests.sh"
+ (("\\$interpret -s port-tests\\.scm") ""))
+ #t)))
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list "PLATFORM=linux"
@@ -338,6 +348,12 @@ mashups, office (web agendas, mail clients, ...), etc.")
;; Parallel builds are not supported, as noted in README.
#:parallel-build? #f))
+ ;; One of the tests ("testing direct invocation can detect calls of too
+ ;; many arguments...") times out when building with a more recent GCC.
+ ;; The problem was reported here:
+ ;; https://lists.gnu.org/archive/html/chicken-hackers/2015-04/msg00059.html
+ (native-inputs
+ `(("gcc" ,gcc-4.8)))
(home-page "http://www.call-cc.org/")
(synopsis "R5RS Scheme implementation that compiles native code via C")
(description
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 3d445332b8..15c68238e2 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -1679,6 +1679,95 @@ matrices. It includes Cholesky decomposition and backsolving as well as
standard R subsetting and Kronecker products.")
(license license:gpl2+)))
+(define-public r-iterators
+ (package
+ (name "r-iterators")
+ (version "1.0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "iterators" version))
+ (sha256
+ (base32
+ "1f057pabs7ss9h1n244can26qsi5n2k3salrdk0b0vkphlrs4kmf"))))
+ (build-system r-build-system)
+ (home-page "http://cran.r-project.org/web/packages/iterators")
+ (synopsis "Iterator construct for R")
+ (description
+ "This package provides support for iterators, which allow a programmer to
+traverse through all the elements of a vector, list, or other collection of
+data.")
+ (license license:asl2.0)))
+
+(define-public r-codetools
+ (package
+ (name "r-codetools")
+ (version "0.2-14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "codetools" version))
+ (sha256
+ (base32
+ "0y9r4m2b8xgavr89sc179knzwpz54xljbc1dinpq2q07i4xn0397"))))
+ (build-system r-build-system)
+ (home-page "http://cran.r-project.org/web/packages/codetools")
+ (synopsis "Code analysis tools for R")
+ (description "This package provides code analysis tools for R to check R
+code for possible problems.")
+ (license (list license:gpl2+ license:gpl3+))))
+
+(define-public r-foreach
+ (package
+ (name "r-foreach")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "foreach" version))
+ (sha256
+ (base32
+ "10aqsd3rxz03s1qdb6gsb1cj89mj4vmh491zfpin4skj1xvkzw0y"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-codetools" ,r-codetools)
+ ("r-iterators" ,r-iterators)))
+ (home-page "http://cran.r-project.org/web/packages/foreach")
+ (synopsis "Foreach looping construct for R")
+ (description
+ "This package provides support for the @code{foreach} looping construct.
+@code{foreach} is an idiom that allows for iterating over elements in a
+collection, without the use of an explicit loop counter. This package in
+particular is intended to be used for its return value, rather than for its
+side effects. In that sense, it is similar to the standard @code{lapply}
+function, but doesn't require the evaluation of a function. Using
+@code{foreach} without side effects also facilitates executing the loop in
+parallel.")
+ (license license:asl2.0)))
+
+(define-public r-doparallel
+ (package
+ (name "r-doparallel")
+ (version "1.0.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "doParallel" version))
+ (sha256
+ (base32
+ "1mddx25l25pw9d0csnx2q203dbg5hbrhkr1f08kw0p02a1lln0kh"))))
+ (properties `((upstream-name . "doParallel")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-foreach" ,r-foreach)
+ ("r-iterators" ,r-iterators)))
+ (home-page "http://cran.r-project.org/web/packages/doParallel")
+ (synopsis "Foreach parallel adaptor for the 'parallel' package")
+ (description
+ "This package provides a parallel backend for the @code{%dopar%} function
+using the parallel package.")
+ (license license:gpl2+)))
+
(define-public r-dt
(package
(name "r-dt")
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 6f3782fa7b..73a0532478 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -185,6 +185,49 @@ the Hannon Lab.")
input bits thoroughly but are not suitable for cryptography.")
(license license:expat))))
+(define-public ustr
+ (package
+ (name "ustr")
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.and.org/ustr/" version
+ "/ustr-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1i623ygdj7rkizj7985q9d6vj5amwg686aqb5j3ixpkqkyp6xbrx"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (list "CC=gcc"
+ "HIDE="
+ ;; Override "/sbin/ldconfig" with "echo" because we don't need
+ ;; "ldconfig".
+ "LDCONFIG=echo"
+ (string-append "prefix=" (assoc-ref %outputs "out"))
+ "all-shared")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-check-for-stdint
+ (lambda _
+ ;; Of course we have stdint.h, just not in /usr/include
+ (substitute* '("Makefile"
+ "ustr-import.in")
+ (("-f \"/usr/include/stdint.h\"") "-z \"\""))
+ #t))
+ ;; No configure script
+ (delete 'configure))))
+ (home-page "http://www.and.org/ustr/")
+ (synopsis "String library with very low memory overhead")
+ (description
+ "Ustr is a string library for C with very low memory overhead.")
+ ;; Quoted from the home page: "The License for the code is MIT, new-BSD,
+ ;; LGPL, etc. ... if you need another license to help compatibility, just
+ ;; ask for it. It's basically public domain, without all the legal
+ ;; problems for everyone that trying to make something public domain
+ ;; entails."
+ (license license:public-domain)))
+
(define-public libconfig
(package
(name "libconfig")
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index d0cc1459c5..7d7276abac 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -113,14 +113,14 @@ as well as the classic centralized workflow.")
;; Keep in sync with 'git-manpages'!
(package
(name "git")
- (version "2.6.3")
+ (version "2.7.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "18vxb5fmwmrps504m23a4xdl29m7ibca3hmz0mn9jc38sz9y95yn"))))
+ "1di96q86fq3pdn5d5v4fw9vf58gha5i9b3r880mxlh275n8ngi49"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@@ -292,7 +292,7 @@ everything from small to very large projects with speed and efficiency.")
version ".tar.xz"))
(sha256
(base32
- "1d7jb4pyln0prgxpxkfiy2l6ragsjzsyqyxbssbchdvl145gj8xf"))))
+ "0va9j0q9h44jqih38h4cmhvbmjppqq7zbiq70220m7hsqqkq824z"))))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))
@@ -545,14 +545,14 @@ control to Git repositories.")
(define-public mercurial
(package
(name "mercurial")
- (version "3.2.4")
+ (version "3.7.2")
(source (origin
(method url-fetch)
- (uri (string-append "https://mercurial.selenic.com/release/mercurial-"
- version ".tar.gz"))
+ (uri (string-append "https://www.mercurial-scm.org/"
+ "release/mercurial-" version ".tar.gz"))
(sha256
(base32
- "1g7nfvapxj5k44dyp0p08v37s0zmrj2vl0rjgfd8297x0afidm08"))))
+ "0ykdvj7k4yxiwbfk0gnrq2flmdlf2cracsvqn3vr7nxhda6l7aav"))))
(build-system python-build-system)
(arguments
`(;; Restrict to Python 2, as Python 3 would require
@@ -561,7 +561,7 @@ control to Git repositories.")
;; FIXME: Disabled tests because they require the nose unit
;; testing framework: https://nose.readthedocs.org/en/latest/ .
#:tests? #f))
- (home-page "http://mercurial.selenic.com")
+ (home-page "https://www.mercurial-scm.org/")
(synopsis "Decentralized version control system")
(description
"Mercurial is a free, distributed source control management tool.
@@ -572,14 +572,14 @@ and offers an easy and intuitive interface.")
(define-public neon
(package
(name "neon")
- (version "0.30.0")
+ (version "0.30.1")
(source (origin
(method url-fetch)
(uri (string-append "http://www.webdav.org/neon/neon-"
version ".tar.gz"))
(sha256
(base32
- "1hlhg5w505jxdvaf7bq17057f6a48dry981g7lp2gwrhbp5wyqi9"))))
+ "1pawhk02x728xn396a1kcivy9gqm94srmgad6ymr9l0qvk02dih0"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index c20569ffde..f427d35777 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -32,6 +32,7 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages xfce)
#:use-module (gnu packages avahi)
#:use-module (gnu packages polkit)
#:use-module (gnu packages xdisorg)
@@ -51,6 +52,8 @@
polkit-service
elogind-configuration
elogind-service
+ gnome-desktop-service
+ xfce-desktop-service
%desktop-services))
;;; Commentary:
@@ -67,6 +70,11 @@
(define (bool value)
(if value "true\n" "false\n"))
+(define (package-direct-input-selector input)
+ (lambda (package)
+ (match (assoc-ref (package-direct-inputs package) input)
+ ((package . _) package))))
+
(define (wrapped-dbus-service service program variable value)
"Return a wrapper for @var{service}, a package containing a D-Bus service,
@@ -697,6 +705,64 @@ when they log out."
;;;
+;;; GNOME desktop service.
+;;;
+
+(define-record-type* <gnome-desktop-configuration> gnome-desktop-configuration
+ make-gnome-desktop-configuration
+ gnome-desktop-configuration
+ (gnome-package gnome-package (default gnome)))
+
+(define gnome-desktop-service-type
+ (service-type
+ (name 'gnome-desktop)
+ (extensions
+ (list (service-extension polkit-service-type
+ (compose list
+ (package-direct-input-selector
+ "gnome-settings-daemon")
+ gnome-package))
+ (service-extension profile-service-type
+ (compose list
+ gnome-package))))))
+
+(define* (gnome-desktop-service #:key (config (gnome-desktop-configuration)))
+ "Return a service that adds the @code{gnome} package to the system profile,
+and extends polkit with the actions from @code{gnome-settings-daemon}."
+ (service gnome-desktop-service-type config))
+
+
+;;;
+;;; XFCE desktop service.
+;;;
+
+(define-record-type* <xfce-desktop-configuration> xfce-desktop-configuration
+ make-xfce-desktop-configuration
+ xfce-desktop-configuration
+ (xfce xfce-package (default xfce)))
+
+(define xfce-desktop-service-type
+ (service-type
+ (name 'xfce-desktop)
+ (extensions
+ (list (service-extension polkit-service-type
+ (compose list
+ (package-direct-input-selector
+ "thunar")
+ xfce-package))
+ (service-extension profile-service-type
+ (compose list
+ xfce-package))))))
+
+(define* (xfce-desktop-service #:key (config (xfce-desktop-configuration)))
+ "Return a service that adds the @code{xfce} package to the system profile,
+and extends polkit with the abilit for @code{thunar} to manipulate the file
+system as root from within a user session, after the user has authenticated
+with the administrator's password."
+ (service xfce-desktop-service-type config))
+
+
+;;;
;;; The default set of desktop services.
;;;
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 980b5a6ba5..e16247b3b8 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -246,13 +246,14 @@ which should be passed to this script as the first argument. If not, the
(let* ((home (getenv "HOME"))
(xsession-file (string-append home "/.xsession"))
(session (match (command-line)
- ((_ x) x)
- (_ #$fallback-session))))
+ ((_) (list #$fallback-session))
+ ((_ x ..1) x))))
(if (file-exists? xsession-file)
;; Run ~/.xsession when it exists.
(exec-from-login-shell xsession-file session)
;; Otherwise, start the specified session.
- (exec-from-login-shell session)))))
+ (apply exec-from-login-shell session)))))
+
(program-file "xinitrc" builder))
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 7f3a1dfac2..a13ef1192c 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -131,6 +131,12 @@
(define (default-skeletons)
"Return the default skeleton files for /etc/skel. These files are copied by
'useradd' in the home directory of newly created user accounts."
+ (define fonts.conf-content
+ ;; SXML for ~/.config/fontconfig/fonts.conf. This works around the fact
+ ;; that Fontconfig currently does not such this directory by default,
+ ;; thereby ignoring fonts installed system-wide (FIXME).
+ `(fontconfig (dir "/run/current-system/profile/share/fonts")))
+
(define copy-guile-wm
#~(begin
(use-modules (guix build utils))
@@ -174,6 +180,22 @@ source /etc/profile\n"))
(xdefaults (plain-file "Xdefaults" "\
XTerm*utf8: always
XTerm*metaSendsEscape: true\n"))
+ (fonts.conf (computed-file
+ "fonts.conf"
+ #~(begin
+ (use-modules (guix build utils)
+ (sxml simple))
+
+ (define dir
+ (string-append #$output
+ "/fontconfig"))
+
+ (mkdir-p dir)
+ (call-with-output-file (string-append dir
+ "/fonts.conf")
+ (lambda (port)
+ (sxml->xml '#$fonts.conf-content port))))
+ #:modules '((guix build utils))))
(gdbinit (plain-file "gdbinit" "\
# Tell GDB where to look for separate debugging files.
set debug-file-directory ~/.guix-profile/lib/debug\n")))
@@ -182,13 +204,15 @@ set debug-file-directory ~/.guix-profile/lib/debug\n")))
(".zlogin" ,zlogin)
(".Xdefaults" ,xdefaults)
(".guile-wm" ,guile-wm)
+ (".config" ,fonts.conf)
(".gdbinit" ,gdbinit))))
(define (skeleton-directory skeletons)
"Return a directory containing SKELETONS, a list of name/derivation tuples."
(computed-file "skel"
#~(begin
- (use-modules (ice-9 match))
+ (use-modules (ice-9 match)
+ (guix build utils))
(mkdir #$output)
(chdir #$output)
@@ -198,9 +222,10 @@ set debug-file-directory ~/.guix-profile/lib/debug\n")))
;; would just copy the symlinks as is.
(for-each (match-lambda
((target source)
- (copy-file source target)))
+ (copy-recursively source target)))
'#$skeletons)
- #t)))
+ #t)
+ #:modules '((guix build utils))))
(define (assert-valid-users/groups users groups)
"Raise an error if USERS refer to groups not listed in GROUPS."
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index afd57668e2..a7d1952b57 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -296,7 +296,8 @@ standard packages used as implicit inputs of the GNU build system."
(imported-modules %gnu-build-system-modules)
(modules %default-modules)
(substitutable? #t)
- allowed-references)
+ allowed-references
+ disallowed-references)
"Return a derivation called NAME that builds from tarball SOURCE, with
input derivation INPUTS, using the usual procedure of the GNU Build
System. The builder is run with GUILE, or with the distro's final Guile
@@ -313,7 +314,8 @@ SUBSTITUTABLE? determines whether users may be able to use substitutes of the
returned derivations, or whether they should always build it locally.
ALLOWED-REFERENCES can be either #f, or a list of packages that the outputs
-are allowed to refer to."
+are allowed to refer to. Likewise for DISALLOWED-REFERENCES, which lists
+packages that must not be referenced."
(define canonicalize-reference
(match-lambda
((? package? p)
@@ -378,6 +380,10 @@ are allowed to refer to."
(and allowed-references
(map canonicalize-reference
allowed-references))
+ #:disallowed-references
+ (and disallowed-references
+ (map canonicalize-reference
+ disallowed-references))
#:guile-for-build guile-for-build))
@@ -432,7 +438,8 @@ is one of `host' or `target'."
(imported-modules %gnu-build-system-modules)
(modules %default-modules)
(substitutable? #t)
- allowed-references)
+ allowed-references
+ disallowed-references)
"Cross-build NAME for TARGET, where TARGET is a GNU triplet. INPUTS are
cross-built inputs, and NATIVE-INPUTS are inputs that run on the build
platform."
@@ -524,6 +531,10 @@ platform."
(and allowed-references
(map canonicalize-reference
allowed-references))
+ #:disallowed-references
+ (and disallowed-references
+ (map canonicalize-reference
+ disallowed-references))
#:guile-for-build guile-for-build))
(define gnu-build-system
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 8843804c40..0568800d7f 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
;;;
@@ -34,6 +34,7 @@
#:use-module (ice-9 format)
#:export (open-socket-for-uri
open-connection-for-uri
+ close-connection
resolve-uri-reference
maybe-expand-mirrors
url-fetch
@@ -236,11 +237,14 @@ abbreviation of URI showing the scheme, host, and basename of the file."
(module-autoload! (current-module)
'(gnutls) '(make-session connection-end/client))
-(define add-weak-reference
- (let ((table (make-weak-key-hash-table)))
- (lambda (from to)
- "Hold a weak reference from FROM to TO."
- (hashq-set! table from to))))
+(define %tls-ports
+ ;; Mapping of session record ports to the underlying file port.
+ (make-weak-key-hash-table))
+
+(define (register-tls-record-port record-port port)
+ "Hold a weak reference from RECORD-PORT to PORT, where RECORD-PORT is a TLS
+session record port using PORT as its underlying communication port."
+ (hashq-set! %tls-ports record-port port))
(define (tls-wrap port server)
"Return PORT wrapped in a TLS connection to SERVER. SERVER must be a DNS
@@ -275,7 +279,7 @@ host name without trailing dot."
;; closed when PORT is GC'd. If we used `port->fdes', it would instead
;; never be closed. So we use `fileno', but keep a weak reference to
;; PORT, so the file descriptor gets closed when RECORD is GC'd.
- (add-weak-reference record port)
+ (register-tls-record-port record port)
record)))
(define (ensure-uri uri-or-string) ;XXX: copied from (web http)
@@ -337,7 +341,8 @@ ETIMEDOUT error is raised."
(loop (cdr addresses))))))))
(define* (open-connection-for-uri uri #:key timeout)
- "Like 'open-socket-for-uri', but also handle HTTPS connections."
+ "Like 'open-socket-for-uri', but also handle HTTPS connections. The
+resulting port must be closed with 'close-connection'."
(define https?
(eq? 'https (uri-scheme uri)))
@@ -367,6 +372,17 @@ ETIMEDOUT error is raised."
(tls-wrap s (uri-host uri))
s)))))
+(define (close-connection port)
+ "Like 'close-port', but (1) idempotent, and (2) also closes the underlying
+port if PORT is a TLS session record port."
+ ;; FIXME: This is a partial workaround for <http://bugs.gnu.org/20145>,
+ ;; because 'http-fetch' & co. may return a chunked input port whose 'close'
+ ;; method calls 'close-port', not 'close-connection'.
+ (unless (port-closed? port)
+ (close-port port))
+ (and=> (hashq-ref %tls-ports port)
+ close-connection))
+
;; XXX: This is an awful hack to make sure the (set-port-encoding! p
;; "ISO-8859-1") call in `read-response' passes, even during bootstrap
;; where iconv is not available.
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 1164774009..f24e3c6f92 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -695,7 +695,8 @@ HASH-ALGO, of the derivation NAME. RECURSIVE? has the same meaning as for
(system (%current-system)) (env-vars '())
(inputs '()) (outputs '("out"))
hash hash-algo recursive?
- references-graphs allowed-references
+ references-graphs
+ allowed-references disallowed-references
leaked-env-vars local-build?
(substitutable? #t))
"Build a derivation with the given arguments, and return the resulting
@@ -710,7 +711,8 @@ pairs. In that case, the reference graph of each store path is exported in
the build environment in the corresponding file, in a simple text format.
When ALLOWED-REFERENCES is true, it must be a list of store items or outputs
-that the derivation's output may refer to.
+that the derivation's outputs may refer to. Likewise, DISALLOWED-REFERENCES,
+if true, must be a list of things the outputs may not refer to.
When LEAKED-ENV-VARS is true, it must be a list of strings denoting
environment variables that are allowed to \"leak\" from the daemon's
@@ -768,6 +770,10 @@ output should not be used."
`(("allowedReferences"
. ,(string-join allowed-references)))
'())
+ ,@(if disallowed-references
+ `(("disallowedReferences"
+ . ,(string-join disallowed-references)))
+ '())
,@(if leaked-env-vars
`(("impureEnvVars"
. ,(string-join leaked-env-vars)))
@@ -1112,6 +1118,7 @@ they can refer to each other."
guile-for-build
references-graphs
allowed-references
+ disallowed-references
local-build? (substitutable? #t))
"Return a derivation that executes Scheme expression EXP as a builder
for derivation NAME. INPUTS must be a list of (NAME DRV-PATH SUB-DRV)
@@ -1132,7 +1139,7 @@ EXP is built using GUILE-FOR-BUILD (a derivation). When GUILE-FOR-BUILD is
omitted or is #f, the value of the `%guile-for-build' fluid is used instead.
See the `derivation' procedure for the meaning of REFERENCES-GRAPHS,
-ALLOWED-REFERENCES, LOCAL-BUILD?, and SUBSTITUTABLE?."
+ALLOWED-REFERENCES, DISALLOWED-REFERENCES, LOCAL-BUILD?, and SUBSTITUTABLE?."
(define guile-drv
(or guile-for-build (%guile-for-build)))
@@ -1258,6 +1265,7 @@ ALLOWED-REFERENCES, LOCAL-BUILD?, and SUBSTITUTABLE?."
#:outputs outputs
#:references-graphs references-graphs
#:allowed-references allowed-references
+ #:disallowed-references disallowed-references
#:local-build? local-build?
#:substitutable? substitutable?)))
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 87bc316f97..7cbc79c31c 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -463,7 +463,7 @@ names and file names suitable for the #:allowed-references argument to
(guile-for-build (%guile-for-build))
(graft? (%graft?))
references-graphs
- allowed-references
+ allowed-references disallowed-references
leaked-env-vars
local-build? (substitutable? #t)
(script-name (string-append name "-builder")))
@@ -497,6 +497,8 @@ text format.
ALLOWED-REFERENCES must be either #f or a list of output names and packages.
In the latter case, the list denotes store items that the result is allowed to
refer to. Any reference to another store item will lead to a build error.
+Similarly for DISALLOWED-REFERENCES, which can list items that must not be
+referenced by the outputs.
The other arguments are as for 'derivation'."
(define %modules modules)
@@ -557,6 +559,11 @@ The other arguments are as for 'derivation'."
#:system system
#:target target)
(return #f)))
+ (disallowed (if disallowed-references
+ (lower-references disallowed-references
+ #:system system
+ #:target target)
+ (return #f)))
(guile (if guile-for-build
(return guile-for-build)
(default-guile-derivation system))))
@@ -585,6 +592,7 @@ The other arguments are as for 'derivation'."
#:hash hash #:hash-algo hash-algo #:recursive? recursive?
#:references-graphs (and=> graphs graphs-file-names)
#:allowed-references allowed
+ #:disallowed-references disallowed
#:leaked-env-vars leaked-env-vars
#:local-build? local-build?
#:substitutable? substitutable?))))
diff --git a/guix/http-client.scm b/guix/http-client.scm
index 25693824ed..97a1e26d3e 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -243,7 +243,7 @@ Raise an '&http-get-error' condition if downloading fails."
(base64-encode
(string->utf8 str))))))
(_ '()))))
- (unless buffered?
+ (unless (or buffered? (not (file-port? port)))
(setvbuf port _IONBF))
(let*-values (((resp data)
;; Try hard to use the API du jour to get an input port.
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index d54bb9fbba..8ae4948147 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -194,7 +194,15 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
(version ,version)
(source (origin
(method url-fetch)
- (uri (pypi-uri ,name version))
+
+ ;; Sometimes 'pypi-uri' doesn't quite work due to mixed
+ ;; cases in NAME, for instance, as is the case with
+ ;; "uwsgi". In that case, fall back to a full URL.
+ (uri ,(if (equal? (pypi-uri name version) source-url)
+ `(pypi-uri ,name version)
+ `(string-append
+ ,@(factorize-uri source-url version))))
+
(sha256
(base32
,(guix-hash-url temp)))))
diff --git a/guix/licenses.scm b/guix/licenses.scm
index 61e679358a..71c0736223 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -28,7 +28,7 @@
#:use-module (srfi srfi-9)
#:export (license? license-name license-uri license-comment
agpl3 agpl3+
- asl2.0
+ asl1.1 asl2.0
boost1.0
bsd-2 bsd-3 bsd-4
non-copyleft
@@ -100,6 +100,11 @@
"https://gnu.org/licenses/agpl.html"
"https://gnu.org/licenses/why-affero-gpl.html"))
+(define asl1.1
+ (license "ASL 1.1"
+ "http://directory.fsf.org/wiki/License:Apache1.1"
+ "https://www.gnu.org/licenses/license-list#apache1"))
+
(define asl2.0
(license "ASL 2.0"
"http://directory.fsf.org/wiki/License:Apache2.0"
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index f135bde9df..27b9e155ec 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -20,7 +20,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix scripts lint)
- #:use-module (guix store)
+ #:use-module ((guix store) #:hide (close-connection))
#:use-module (guix base32)
#:use-module (guix download)
#:use-module (guix ftp-client)
@@ -41,7 +41,8 @@
#:use-module (web uri)
#:use-module ((guix build download)
#:select (maybe-expand-mirrors
- open-connection-for-uri))
+ open-connection-for-uri
+ close-connection))
#:use-module (web request)
#:use-module (web response)
#:use-module (srfi srfi-1)
@@ -296,7 +297,7 @@ for connections to complete; when TIMEOUT is #f, wait as long as needed."
(force-output port)
(read-response port))
(lambda ()
- (close port))))
+ (close-connection port))))
(case (response-code response)
((301 302 307)
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 524d453ffa..4563f3df0f 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -19,7 +19,7 @@
(define-module (guix scripts substitute)
#:use-module (guix ui)
- #:use-module (guix store)
+ #:use-module ((guix store) #:hide (close-connection))
#:use-module (guix utils)
#:use-module (guix config)
#:use-module (guix records)
@@ -33,6 +33,7 @@
#:use-module ((guix build download)
#:select (progress-proc uri-abbreviation
open-connection-for-uri
+ close-connection
store-path-abbreviation byte-count->string))
#:use-module (ice-9 rdelim)
#:use-module (ice-9 regex)
@@ -108,15 +109,18 @@ disabled!~%"))
(define %narinfo-ttl
;; Number of seconds during which cached narinfo lookups are considered
- ;; valid. This is a reasonable default value (corresponds to the TTL for
- ;; nginx's .nar cache on hydra.gnu.org) but we'd rather want publishers to
- ;; state what their TTL is in /nix-cache-info. (XXX)
+ ;; valid for substitute servers that do not advertise a TTL via the
+ ;; 'Cache-Control' response header.
(* 36 3600))
(define %narinfo-negative-ttl
- ;; Likewise, but for negative lookups---i.e., cached lookup failures.
+ ;; Likewise, but for negative lookups---i.e., cached lookup failures (404).
(* 3 3600))
+(define %narinfo-transient-error-ttl
+ ;; Likewise, but for transient errors such as 504 ("Gateway timeout").
+ (* 10 60))
+
(define %narinfo-expired-cache-entry-removal-delay
;; How often we want to remove files corresponding to expired cache entries.
(* 7 24 3600))
@@ -197,7 +201,7 @@ provide."
(unless (or (guile-version>? "2.0.9")
(version>? (version) "2.0.9.39"))
(when port
- (close-port port))))
+ (close-connection port))))
(begin
(when (or (not port) (port-closed? port))
(set! port (open-connection-for-uri uri))
@@ -242,7 +246,7 @@ failure, return #f and #f."
(uri->string (http-get-error-uri c))
(http-get-error-code c)
(http-get-error-reason c))
- (close-port port)
+ (close-connection port)
(warning (_ "ignoring substitute server at '~s'~%") url)
(values #f #f)))
(values (read-cache-info (http-fetch uri
@@ -452,18 +456,18 @@ for PATH."
(call-with-input-file cache-file
(lambda (p)
(match (read p)
- (('narinfo ('version 1)
+ (('narinfo ('version 2)
('cache-uri cache-uri)
- ('date date) ('value #f))
+ ('date date) ('ttl _) ('value #f))
;; A cached negative lookup.
(if (obsolete? date now %narinfo-negative-ttl)
(values #f #f)
(values #t #f)))
- (('narinfo ('version 1)
+ (('narinfo ('version 2)
('cache-uri cache-uri)
- ('date date) ('value value))
+ ('date date) ('ttl ttl) ('value value))
;; A cached positive lookup
- (if (obsolete? date now %narinfo-ttl)
+ (if (obsolete? date now ttl)
(values #f #f)
(values #t (string->narinfo value cache-uri))))
(('narinfo ('version v) _ ...)
@@ -471,16 +475,19 @@ for PATH."
(lambda _
(values #f #f))))
-(define (cache-narinfo! cache-url path narinfo)
- "Cache locally NARNIFO for PATH, which originates from CACHE-URL. NARINFO
-may be #f, in which case it indicates that PATH is unavailable at CACHE-URL."
+(define (cache-narinfo! cache-url path narinfo ttl)
+ "Cache locally NARNIFO for PATH, which originates from CACHE-URL, with the
+given TTL (a number of seconds or #f). NARINFO may be #f, in which case it
+indicates that PATH is unavailable at CACHE-URL."
(define now
(current-time time-monotonic))
(define (cache-entry cache-uri narinfo)
- `(narinfo (version 1)
+ `(narinfo (version 2)
(cache-uri ,cache-uri)
(date ,(time-second now))
+ (ttl ,(or ttl
+ (if narinfo %narinfo-ttl %narinfo-negative-ttl)))
(value ,(and=> narinfo narinfo->string))))
(let ((file (narinfo-cache-file cache-url path)))
@@ -549,7 +556,7 @@ initial connection on which HTTP requests are sent."
;; Note that even upon "Connection: close", we can read from BODY.
(match (assq 'connection (response-headers resp))
(('connection 'close)
- (close-port p)
+ (close-connection p)
(connect #f tail result)) ;try again
(_
(loop tail result)))))))))) ;keep going
@@ -583,31 +590,30 @@ if file doesn't exist, and the narinfo otherwise."
(set! done (+ 1 done)))))
(define (handle-narinfo-response request response port result)
- (let ((len (response-content-length response)))
+ (let* ((code (response-code response))
+ (len (response-content-length response))
+ (cache (response-cache-control response))
+ (ttl (and cache (assoc-ref cache 'max-age))))
;; Make sure to read no more than LEN bytes since subsequent bytes may
;; belong to the next response.
- (case (response-code response)
- ((200) ; hit
- (let ((narinfo (read-narinfo port url #:size len)))
- (cache-narinfo! url (narinfo-path narinfo) narinfo)
- (update-progress!)
- (cons narinfo result)))
- ((404) ; failure
- (let* ((path (uri-path (request-uri request)))
- (hash-part (string-drop-right path 8))) ; drop ".narinfo"
- (if len
- (get-bytevector-n port len)
- (read-to-eof port))
- (cache-narinfo! url
- (find (cut string-contains <> hash-part) paths)
- #f)
- (update-progress!)
- result))
- (else ; transient failure
- (if len
- (get-bytevector-n port len)
- (read-to-eof port))
- result))))
+ (if (= code 200) ; hit
+ (let ((narinfo (read-narinfo port url #:size len)))
+ (cache-narinfo! url (narinfo-path narinfo) narinfo ttl)
+ (update-progress!)
+ (cons narinfo result))
+ (let* ((path (uri-path (request-uri request)))
+ (hash-part (string-drop-right path 8))) ; drop ".narinfo"
+ (if len
+ (get-bytevector-n port len)
+ (read-to-eof port))
+ (cache-narinfo! url
+ (find (cut string-contains <> hash-part) paths)
+ #f
+ (if (= 404 code)
+ ttl
+ %narinfo-transient-error-ttl))
+ (update-progress!)
+ result))))
(define (do-fetch uri port)
(case (and=> uri uri-scheme)
@@ -618,8 +624,7 @@ if file doesn't exist, and the narinfo otherwise."
handle-narinfo-response '()
requests
#:port port)))
- (unless (port-closed? port)
- (close-port port))
+ (close-connection port)
(newline (current-error-port))
result)))
((file #f)
@@ -641,7 +646,7 @@ if file doesn't exist, and the narinfo otherwise."
(begin
(warning (_ "'~a' uses different store '~a'; ignoring it~%")
url (cache-info-store-directory cache-info))
- (close-port port)
+ (close-connection port)
#f)))))
(define (lookup-narinfos cache paths)
@@ -704,12 +709,12 @@ indefinitely."
(call-with-input-file file
(lambda (port)
(match (read port)
- (('narinfo ('version 1) ('cache-uri _) ('date date)
- ('value #f))
+ (('narinfo ('version 2) ('cache-uri _)
+ ('date date) ('ttl _) ('value #f))
(obsolete? date now %narinfo-negative-ttl))
- (('narinfo ('version 1) ('cache-uri _) ('date date)
- ('value _))
- (obsolete? date now %narinfo-ttl))
+ (('narinfo ('version 2) ('cache-uri _)
+ ('date date) ('ttl ttl) ('value _))
+ (obsolete? date now ttl))
(_ #t)))))
(lambda args
;; FILE may have been deleted.
@@ -771,7 +776,7 @@ PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by
(make-custom-binary-input-port "progress-port-proc"
read! #f #f
- (cut close-port port)))
+ (cut close-connection port)))
(define-syntax with-networking
(syntax-rules ()
@@ -949,15 +954,9 @@ substitutes may be unavailable\n")))))
found."
(assoc-ref (daemon-options) option))
-(define-syntax-rule (or* a b)
- (let ((first a))
- (if (or (not first) (string-null? first))
- b
- first)))
-
(define %cache-urls
- (match (and=> (or* (find-daemon-option "untrusted-substitute-urls") ;client
- (find-daemon-option "substitute-urls")) ;admin
+ (match (and=> (or (find-daemon-option "untrusted-substitute-urls") ;client
+ (find-daemon-option "substitute-urls")) ;admin
string-tokenize)
((urls ...)
urls)
diff --git a/guix/store.scm b/guix/store.scm
index 01248738dc..ae52628545 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -504,8 +504,12 @@ encoding conversion errors."
(status k))))))))
(define %default-substitute-urls
- ;; Default list of substituters.
- '("http://hydra.gnu.org"))
+ ;; Default list of substituters. This is *not* the list used by
+ ;; 'guix-daemon', and few clients use it ('guix build --log-file' uses it.)
+ (map (if (false-if-exception (resolve-interface '(gnutls)))
+ (cut string-append "https://" <>)
+ (cut string-append "http://" <>))
+ '("hydra.gnu.org")))
(define* (set-build-options server
#:key keep-failed? keep-going? fallback?
diff --git a/m4/guix.m4 b/m4/guix.m4
index acfc33e170..2d3dfd282e 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -307,3 +307,49 @@ AC_DEFUN([GUIX_LIBGCRYPT_LIBDIR], [
fi])
$1="$guix_cv_libgcrypt_libdir"
])
+
+dnl GUIX_CURRENT_LOCALSTATEDIR
+dnl
+dnl Determine the localstatedir of an existing Guix installation and set
+dnl 'guix_cv_current_localstatedir' accordingly. Set it to "none" if no
+dnl existing installation was found.
+AC_DEFUN([GUIX_CURRENT_LOCALSTATEDIR], [
+ AC_PATH_PROG([GUILE], [guile])
+ AC_CACHE_CHECK([the current installation's localstatedir],
+ [guix_cv_current_localstatedir],
+ [dnl Call 'dirname' because (guix config) appends "/guix" to LOCALSTATEDIR.
+ guix_cv_current_localstatedir="`"$GUILE" \
+ -c '(use-modules (guix config))
+ (when (string=? %store-directory "'$storedir'")
+ (display (dirname %state-directory)))' \
+ 2>/dev/null`"
+ if test "x$guix_cv_current_localstatedir" = "x"; then
+ guix_cv_current_localstatedir=none
+ fi])])
+
+dnl GUIX_CHECK_LOCALSTATEDIR
+dnl
+dnl Check that the LOCALSTATEDIR value is consistent with that of the existing
+dnl Guix installation, if any. Error out or warn if they do not match.
+AC_DEFUN([GUIX_CHECK_LOCALSTATEDIR], [
+ AC_REQUIRE([GUIX_CURRENT_LOCALSTATEDIR])
+ if test "x$guix_cv_current_localstatedir" != "xnone"; then
+ if test "$guix_cv_current_localstatedir" != "$guix_localstatedir"; then
+ case "$localstatedir" in
+ NONE|\${prefix}*)
+ # User kept the default value---i.e., did not pass '--localstatedir'.
+ AC_MSG_ERROR([chosen localstatedir '$guix_localstatedir' does not match \
+that of the existing installation '$guix_cv_current_localstatedir'
+Installing may corrupt $storedir!
+Use './configure --localstatedir=$guix_cv_current_localstatedir'.])
+ ;;
+ *)
+ # User passed an explicit '--localstatedir'. Assume they know what
+ # they're doing.
+ AC_MSG_WARN([chosen localstatedir '$guix_localstatedir' does not match \
+that of the existing installation '$guix_cv_current_localstatedir'])
+ AC_MSG_WARN([installing may corrupt $storedir!])
+ ;;
+ esac
+ fi
+ fi])
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index 20a0732fcb..d5d33a587a 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -1,5 +1,5 @@
/* GNU Guix --- Functional package management for GNU
- Copyright (C) 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+ Copyright (C) 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
This file is part of GNU Guix.
@@ -327,7 +327,7 @@ main (int argc, char *argv[])
settings.set ("build-use-substitutes", "true");
/* Use our substitute server by default. */
- settings.set ("substitute-urls", "http://hydra.gnu.org");
+ settings.set ("substitute-urls", GUIX_SUBSTITUTE_URLS);
#ifdef HAVE_DAEMON_OFFLOAD_HOOK
/* Use our build hook for distributed builds by default. */
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 3c35218040..4d3b82fe1a 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -504,6 +504,25 @@
(build-derivations %store (list drv))
#f)))
+(test-assert "derivation #:disallowed-references, ok"
+ (let ((drv (derivation %store "disallowed" %bash
+ '("-c" "echo hello > $out")
+ #:inputs `((,%bash))
+ #:disallowed-references '("out"))))
+ (build-derivations %store (list drv))))
+
+(test-assert "derivation #:disallowed-references, not ok"
+ (let* ((txt (add-text-to-store %store "foo" "Hello, world."))
+ (drv (derivation %store "disdisallowed" %bash
+ `("-c" ,(string-append "echo " txt "> $out"))
+ #:inputs `((,%bash) (,txt))
+ #:disallowed-references (list txt))))
+ (guard (c ((nix-protocol-error? c)
+ ;; There's no specific error message to check for.
+ #t))
+ (build-derivations %store (list drv))
+ #f)))
+
;; Here we should get the value of $NIX_STATE_DIR that the daemon sees, which
;; is a unique value for each test process; this value is the same as the one
;; we see in the process executing this file since it is set by 'test-env'.
diff --git a/tests/gexp.scm b/tests/gexp.scm
index d343dc3329..75b907abee 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -600,6 +600,30 @@
(build-derivations %store (list drv))
#f)))
+(test-assertm "gexp->derivation #:disallowed-references, allowed"
+ (mlet %store-monad ((drv (gexp->derivation "disallowed-refs"
+ #~(begin
+ (mkdir #$output)
+ (chdir #$output)
+ (symlink #$output "self")
+ (symlink #$%bootstrap-guile
+ "guile"))
+ #:disallowed-references '())))
+ (built-derivations (list drv))))
+
+
+(test-assert "gexp->derivation #:disallowed-references"
+ (let ((drv (run-with-store %store
+ (gexp->derivation "disallowed-refs"
+ #~(begin
+ (mkdir #$output)
+ (chdir #$output)
+ (symlink #$%bootstrap-guile "guile"))
+ #:disallowed-references (list %bootstrap-guile)))))
+ (guard (c ((nix-protocol-error? c) #t))
+ (build-derivations %store (list drv))
+ #f)))
+
(define shebang
(string-append "#!" (derivation->output-path (%guile-for-build))
"/bin/guile --no-auto-compile"))
diff --git a/tests/pypi.scm b/tests/pypi.scm
index 960b8cd32a..cf351a542f 100644
--- a/tests/pypi.scm
+++ b/tests/pypi.scm
@@ -84,7 +84,8 @@ baz > 13.37")
('version "1.0.0")
('source ('origin
('method 'url-fetch)
- ('uri (pypi-uri "foo" version))
+ ('uri (string-append "https://example.com/foo-"
+ version ".tar.gz"))
('sha256
('base32
(? string? hash)))))
diff --git a/tests/store.scm b/tests/store.scm
index 3d32d52758..f7db7df966 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -450,7 +450,11 @@
(with-store s ;the right one again
(set-build-options s #:use-substitutes? #t
#:substitute-urls (%test-substitute-urls))
- (has-substitutes? s o))))))
+ (has-substitutes? s o))
+ (with-store s ;empty list of URLs
+ (set-build-options s #:use-substitutes? #t
+ #:substitute-urls '())
+ (not (has-substitutes? s o)))))))
(test-assert "substitute"
(with-store s