summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2016-01-24 21:04:54 -0500
committerMark H Weaver <mhw@netris.org>2016-01-24 21:04:54 -0500
commit412bee5e2931a53066ae593808935608d54a4345 (patch)
tree28b297694296115f056ead6de81d24bbd98d75f5
parent68716289995d106c7adc779548eebc5df324e6cf (diff)
parent880d647d0f1a0ea0aea2af84fa2e99e3286b65a1 (diff)
Merge branch 'master' into core-updates
-rw-r--r--Makefile.am4
-rw-r--r--build-aux/hydra/gnu-system.scm5
-rw-r--r--doc/guix.texi143
-rw-r--r--gnu-system.am6
-rw-r--r--gnu/build/linux-container.scm2
-rw-r--r--gnu/packages/admin.scm27
-rw-r--r--gnu/packages/algebra.scm5
-rw-r--r--gnu/packages/audio.scm6
-rw-r--r--gnu/packages/bioinformatics.scm230
-rw-r--r--gnu/packages/bittorrent.scm44
-rw-r--r--gnu/packages/debug.scm18
-rw-r--r--gnu/packages/dns.scm36
-rw-r--r--gnu/packages/ebook.scm4
-rw-r--r--gnu/packages/enlightenment.scm6
-rw-r--r--gnu/packages/grue-hunter.scm2
-rw-r--r--gnu/packages/lego.scm67
-rw-r--r--gnu/packages/linux.scm12
-rw-r--r--gnu/packages/mail.scm35
-rw-r--r--gnu/packages/messaging.scm15
-rw-r--r--gnu/packages/music.scm50
-rw-r--r--gnu/packages/nano.scm6
-rw-r--r--gnu/packages/patches/arb-ldconfig.patch22
-rw-r--r--gnu/packages/patches/linux-libre-CVE-2016-0728.patch84
-rw-r--r--gnu/packages/patches/tophat-build-with-later-seqan.patch24
-rw-r--r--gnu/packages/tls.scm8
-rw-r--r--gnu/packages/tor.scm9
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm36
-rw-r--r--gnu/packages/xiph.scm14
-rw-r--r--gnu/services/avahi.scm5
-rw-r--r--gnu/system.scm26
-rw-r--r--gnu/system/grub.scm54
-rw-r--r--guix/import/cran.scm103
-rw-r--r--guix/import/gem.scm7
-rw-r--r--guix/licenses.scm8
-rw-r--r--guix/scripts/build.scm10
-rw-r--r--guix/scripts/import/cran.scm9
-rw-r--r--guix/scripts/refresh.scm1
-rw-r--r--tests/cran.scm12
-rw-r--r--tests/derivations.scm27
-rw-r--r--tests/gem.scm2
-rw-r--r--tests/import-utils.scm39
-rw-r--r--tests/lint.scm5
-rw-r--r--tests/publish.scm4
-rw-r--r--tests/system.scm77
45 files changed, 1143 insertions, 172 deletions
diff --git a/Makefile.am b/Makefile.am
index 74bc8b5948..1ede6d4057 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -240,8 +240,10 @@ SCM_TESTS = \
tests/challenge.scm \
tests/cve.scm \
tests/file-systems.scm \
+ tests/system.scm \
tests/services.scm \
- tests/containers.scm
+ tests/containers.scm \
+ tests/import-utils.scm
if HAVE_GUILE_JSON
diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm
index d586d90ae2..c3cb9cc7fa 100644
--- a/build-aux/hydra/gnu-system.scm
+++ b/build-aux/hydra/gnu-system.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.
;;;
@@ -78,6 +78,9 @@
(license . ,(package-license package))
(home-page . ,(package-home-page package))
(maintainers . ("bug-guix@gnu.org"))
+ (max-silent-time . ,(or (assoc-ref (package-properties package)
+ 'max-silent-time)
+ 3600)) ; 1 hour by default
(timeout . ,(or (assoc-ref (package-properties package) 'timeout)
72000)))) ; 20 hours by default
diff --git a/doc/guix.texi b/doc/guix.texi
index 592ec3cb1d..a650a55d51 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -399,6 +399,21 @@ for instance with:
# ln -s /var/guix/profiles/per-user/root/guix-profile/bin/guix
@end example
+It is also a good idea to make the Info version of this manual available
+there:
+
+@example
+# mkdir -p /usr/local/share/info
+# cd /usr/local/share/info
+# for i in /var/guix/profiles/per-user/root/guix-profile/share/info/* ;
+ do ln -s $i ; done
+@end example
+
+That way, assuming @file{/usr/local/share/info} is in the search path,
+running @command{info guix} will open this manual (@pxref{Other Info
+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:
@@ -754,7 +769,7 @@ machines, since offloading works by invoking the @code{guix archive} and
this is the case by running:
@example
-lsh build-machine guile -c '(use-modules (guix config))'
+lsh build-machine guile -c "'(use-modules (guix config))'"
@end example
There's one last thing to do once @file{machines.scm} is in place. As
@@ -3973,6 +3988,14 @@ Keep the build tree of failed builds. Thus, if a build fail, its build
tree is kept under @file{/tmp}, in a directory whose name is shown at
the end of the build log. This is useful when debugging build issues.
+@item --keep-going
+@itemx -k
+Keep going when some of the derivations fail to build; return only once
+all the builds have either completed or failed.
+
+The default behavior is to stop as soon as one of the specified
+derivations has failed.
+
@item --dry-run
@itemx -n
Do not build the derivations.
@@ -4271,11 +4294,12 @@ guix import cpan Acme::Boolean
@item cran
@cindex CRAN
+@cindex Bioconductor
Import meta-data from @uref{http://cran.r-project.org/, CRAN}, the
central repository for the @uref{http://r-project.org, GNU@tie{}R
statistical and graphical environment}.
-Information is extracted from the package's DESCRIPTION file.
+Information is extracted from the package's @code{DESCRIPTION} file.
The command command below imports meta-data for the @code{Cairo}
R package:
@@ -4284,6 +4308,21 @@ R package:
guix import cran Cairo
@end example
+When @code{--archive=bioconductor} is added, meta-data is imported from
+@uref{http://www.bioconductor.org/, Bioconductor}, a repository of R
+packages for for the analysis and comprehension of high-throughput
+genomic data in bioinformatics.
+
+Information is extracted from a package's @code{DESCRIPTION} file
+published on the web interface of the Bioconductor SVN repository.
+
+The command command below imports meta-data for the @code{GenomicRanges}
+R package:
+
+@example
+guix import cran --archive=bioconductor GenomicRanges
+@end example
+
@item nix
Import meta-data from a local copy of the source of the
@uref{http://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This
@@ -4482,6 +4521,8 @@ the updater for GNOME packages;
the updater for @uref{http://elpa.gnu.org/, ELPA} packages;
@item cran
the updater for @uref{http://cran.r-project.org/, CRAN} packages;
+@item bioconductor
+the updater for @uref{http://www.bioconductor.org/, Bioconductor} R packages;
@item pypi
the updater for @uref{https://pypi.python.org, PyPI} packages.
@end table
@@ -5674,17 +5715,23 @@ above, such as @code{host-name} and @code{bootloader}, are mandatory.
Others, such as @code{packages} and @code{services}, can be omitted, in
which case they get a default value.
+Below we discuss the effect of some of the most important fields
+(@pxref{operating-system Reference}, for details about all the available
+fields), and how to @dfn{instantiate} the operating system using
+@command{guix system}.
+
+@unnumberedsubsubsec Globally-Visible Packages
+
@vindex %base-packages
-The @code{packages} field lists
-packages that will be globally visible on the system, for all user
-accounts---i.e., in every user's @code{PATH} environment variable---in
-addition to the per-user profiles (@pxref{Invoking guix package}). The
-@var{%base-packages} variable provides all the tools one would expect
-for basic user and administrator tasks---including the GNU Core
-Utilities, the GNU Networking Utilities, the GNU Zile lightweight text
-editor, @command{find}, @command{grep}, etc. The example above adds
-tcpdump to those, taken from the @code{(gnu packages admin)} module
-(@pxref{Package Modules}).
+The @code{packages} field lists packages that will be globally visible
+on the system, for all user accounts---i.e., in every user's @code{PATH}
+environment variable---in addition to the per-user profiles
+(@pxref{Invoking guix package}). The @var{%base-packages} variable
+provides all the tools one would expect for basic user and administrator
+tasks---including the GNU Core Utilities, the GNU Networking Utilities,
+the GNU Zile lightweight text editor, @command{find}, @command{grep},
+etc. The example above adds tcpdump to those, taken from the @code{(gnu
+packages admin)} module (@pxref{Package Modules}).
@findex specification->package
Referring to packages by variable name, like @var{tcpdump} above, has
@@ -5706,6 +5753,8 @@ version:
%base-packages)))
@end lisp
+@unnumberedsubsubsec System Services
+
@vindex %base-services
The @code{services} field lists @dfn{system services} to be made
available when the system starts (@pxref{Services}).
@@ -5754,10 +5803,24 @@ more, would look like this:
@xref{Desktop Services}, for the exact list of services provided by
@var{%desktop-services}. @xref{X.509 Certificates}, for background
information about the @code{nss-certs} package that is used here.
-@xref{operating-system Reference}, for details about all the available
-@code{operating-system} fields.
-Assuming the above snippet is stored in the @file{my-system-config.scm}
+Again, @var{%desktop-services} is just a list of service objects. If
+you want to remove services from there, you can do so using the
+procedures for list filtering (@pxref{SRFI-1 Filtering and
+Partitioning,,, guile, GNU Guile Reference Manual}). For instance, the
+following expression returns a list that contains all the services in
+@var{%desktop-services} minus the Avahi service:
+
+@example
+(remove (lambda (service)
+ (eq? (service-kind service) avahi-service-type))
+ %desktop-services)
+@end example
+
+@unnumberedsubsubsec Instantiating the System
+
+Assuming the @code{operating-system} declaration
+is stored in the @file{my-system-config.scm}
file, the @command{guix system reconfigure my-system-config.scm} command
instantiates that configuration, and makes it the default GRUB boot
entry (@pxref{Invoking guix system}).
@@ -5779,6 +5842,8 @@ something went wrong with the latest generation. Reassuring, no? The
@command{guix system list-generations} command lists the system
generations available on disk.
+@unnumberedsubsubsec The Programming Interface
+
At the Scheme level, the bulk of an @code{operating-system} declaration
is instantiated with the following monadic procedure (@pxref{The Store
Monad}):
@@ -5792,6 +5857,11 @@ the packages, configuration files, and other supporting files needed to
instantiate @var{os}.
@end deffn
+This procedure is provided by the @code{(gnu system)} module. Along
+with @code{(gnu services)} (@pxref{Services}), this module contains the
+guts of GuixSD. Make sure to visit it!
+
+
@node operating-system Reference
@subsection @code{operating-system} Reference
@@ -6288,7 +6358,7 @@ using the @code{locale} field of the @code{operating-system} declaration
That locale must be among the @dfn{locale definitions} that are known to
the system---and these are specified in the @code{locale-definitions}
slot of @code{operating-system}. The default value includes locale
-definition for some widely used locales, but not for all the available
+definitions for some widely used locales, but not for all the available
locales, in order to save space.
If the locale specified in the @code{locale} field is not among the
@@ -6762,13 +6832,14 @@ and lines for hidden services added via @code{tor-hidden-service}. Run
@command{man tor} for information about the configuration file.
@end deffn
+@cindex hidden service
@deffn {Scheme Procedure} tor-hidden-service @var{name} @var{mapping}
Define a new Tor @dfn{hidden service} called @var{name} and implementing
@var{mapping}. @var{mapping} is a list of port/host tuples, such as:
@example
- '((22 \"127.0.0.1:22\")
- (80 \"127.0.0.1:8080\"))
+ '((22 "127.0.0.1:22")
+ (80 "127.0.0.1:8080"))
@end example
In this example, port 22 of the hidden service is mapped to local port 22, and
@@ -8907,7 +8978,7 @@ Now that you know all the features that initial RAM disks produced by
further.
@deffn {Monadic Procedure} base-initrd @var{file-systems} @
- [#:qemu-networking? #f] [#:virtio? #f] [#:volatile-root? #f] @
+ [#:qemu-networking? #f] [#:virtio? #t] [#:volatile-root? #f] @
[#:extra-modules '()] [#:mapped-devices '()]
Return a monadic derivation that builds a generic initrd. @var{file-systems} is
a list of file-systems to be mounted by the initrd, possibly in addition to
@@ -10060,6 +10131,40 @@ If we also wanted GTK+ 3.8.2, this would be packaged as
...))
@end example
+@c See <https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>,
+@c for a discussion of what follows.
+@cindex version number, for VCS snapshots
+Occasionally, we package snapshots of upstream's version control system
+(VCS) instead of formal releases. This should remain exceptional,
+because it is up to upstream developers to clarify what the stable
+release is. Yet, it is sometimes necessary. So, what should we put in
+the @code{version} field?
+
+Clearly, we need to make the commit identifier of the VCS snapshot
+visible in the version string, but we also need to make sure that the
+version string is monotonically increasing so that @command{guix package
+--upgrade} can determine which version is newer. Since commit
+identifiers, notably with Git, are not monotonically increasing, we add
+a revision number that we increase each time we upgrade to a newer
+snapshot. The resulting version string looks like this:
+
+@example
+2.0.11-3.cabba9e
+ ^ ^ ^
+ | | `-- upstream commit ID
+ | |
+ | `--- Guix package revision
+ |
+latest upstream version
+@end example
+
+It is a good idea to strip commit identifiers in the @code{version}
+field to, say, 7 digits. It avoids an aesthetic annoyance (assuming
+aesthetics have a role to play here) as well as problems related to OS
+limits such as the maximum shebang length (127 bytes for the Linux
+kernel.) It is best to use the full commit identifiers in
+@code{origin}s, though, to avoid ambiguities.
+
@node Synopses and Descriptions
@subsection Synopses and Descriptions
diff --git a/gnu-system.am b/gnu-system.am
index d37775d235..297f40a50e 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -1,6 +1,6 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
-# Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
+# Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
# Copyright © 2013, 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
#
# This file is part of GNU Guix.
@@ -177,6 +177,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/kodi.scm \
gnu/packages/language.scm \
gnu/packages/ldc.scm \
+ gnu/packages/lego.scm \
gnu/packages/less.scm \
gnu/packages/lesstif.scm \
gnu/packages/libcanberra.scm \
@@ -408,6 +409,7 @@ dist_patch_DATA = \
gnu/packages/patches/agg-am_c_prototype.patch \
gnu/packages/patches/alsa-lib-mips-atomic-fix.patch \
gnu/packages/patches/apr-skip-getservbyname-test.patch \
+ gnu/packages/patches/arb-ldconfig.patch \
gnu/packages/patches/asymptote-gsl2.patch \
gnu/packages/patches/ath9k-htc-firmware-binutils.patch \
gnu/packages/patches/ath9k-htc-firmware-gcc.patch \
@@ -568,6 +570,7 @@ dist_patch_DATA = \
gnu/packages/patches/libwmf-CVE-2015-4695.patch \
gnu/packages/patches/libwmf-CVE-2015-4696.patch \
gnu/packages/patches/libxslt-CVE-2015-7995.patch \
+ gnu/packages/patches/linux-libre-CVE-2016-0728.patch \
gnu/packages/patches/lirc-localstatedir.patch \
gnu/packages/patches/libpthread-glibc-preparation.patch \
gnu/packages/patches/lm-sensors-hwmon-attrs.patch \
@@ -686,6 +689,7 @@ dist_patch_DATA = \
gnu/packages/patches/tidy-CVE-2015-5522+5523.patch \
gnu/packages/patches/tinyxml-use-stl.patch \
gnu/packages/patches/tk-find-library.patch \
+ gnu/packages/patches/tophat-build-with-later-seqan.patch \
gnu/packages/patches/torsocks-dns-test.patch \
gnu/packages/patches/tvtime-gcc41.patch \
gnu/packages/patches/tvtime-pngoutput.patch \
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index eb5dbf94a3..ec68679f0b 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -41,7 +41,7 @@
"Return #t if user namespaces can be created by unprivileged users."
(let ((userns-file "/proc/sys/kernel/unprivileged_userns_clone"))
(if (file-exists? userns-file)
- (string=? "1" (call-with-input-file userns-file read-string))
+ (eqv? #\1 (call-with-input-file userns-file read-char))
#t)))
(define (setgroups-supported?)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 1f2d0fbf95..953c5b4cf8 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -392,7 +393,7 @@ connection alive.")
(bind-minor-version "9")
(bind-patch-version "8")
(bind-release-type "-P")
- (bind-release-version "2")
+ (bind-release-version "3")
(bind-version (string-append bind-major-version
"."
bind-minor-version
@@ -508,7 +509,7 @@ connection alive.")
"/bind-" bind-version ".tar.gz"))
(sha256
(base32
- "0agkpmpna7s67la13krn4xlhwhdjpazmljxlq0zbjdwnw4k1k17m"))))
+ "01qa17479jghy90lb2j8b1bpg3ay6k6aaajpigyirwzsvyc9yj3a"))))
;; When cross-compiling, we need the cross Coreutils and sed.
;; Otherwise just use those from %FINAL-INPUTS.
@@ -1377,3 +1378,25 @@ command that learns\". It works by maintaining a database of the directories
you use the most from the command line and allows you to \"jump\" to
frequently used directories by typing only a small pattern.")
(license license:gpl3+)))
+
+(define-public iftop
+ (package
+ (name "iftop")
+ (version "1.0pre4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.ex-parrot.com/~pdw/iftop/download"
+ "/iftop-" version ".tar.gz"))
+ (sha256
+ (base32
+ "15sgkdyijb7vbxpxjavh5qm5nvyii3fqcg9mzvw7fx8s6zmfwczp"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libpcap" ,libpcap)
+ ("ncurses" ,ncurses)))
+ (synopsis "Monitor network usage")
+ (description "Iftop does for network usage what @command{top} does
+for CPU usage. It listens to network traffic on a named interface and
+displays a table of current bandwidth usage by pairs of hosts.")
+ (home-page "http://www.ex-parrot.com/~pdw/iftop/")
+ (license license:gpl3)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index dd6838140b..0f17403868 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -238,7 +238,7 @@ fast arithmetic.")
(define-public arb
(package
(name "arb")
- (version "2.7.0")
+ (version "2.8.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -247,7 +247,8 @@ fast arithmetic.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1rwkffs57v8mry63rq8l2dyw69zfs9rg5fpbfllqp3nkjnkp1fly"))))
+ "04hhcpshfkcq9fr4hixbhpps50yf9drk62xgkvlcaj5kb4nyrx7l"))
+ (patches (map search-patch '("arb-ldconfig.patch")))))
(build-system gnu-build-system)
(propagated-inputs
`(("flint" ,flint))) ; flint.h is included by arf.h
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 3cc5cebc2c..0823aad91e 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1535,14 +1535,14 @@ surround and reverb.")
(define-public libxmp
(package
(name "libxmp")
- (version "4.3.8")
+ (version "4.3.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/xmp/libxmp/"
name "-" version ".tar.gz"))
(sha256
(base32
- "0h06091hlpgc6ds4pjmfq8sx4snw7av3nhny180q4pwfyasjb6ny"))))
+ "1gm5xa0ca7ypcbj3bkmj3k1vvzl7nkch8gjyrm8p1a9vgzr0n761"))))
(build-system gnu-build-system)
(home-page "http://xmp.sourceforge.net/")
(synopsis "Module player library")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 314d0ad322..a9df676fc6 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -654,6 +654,73 @@ gapped, local, and paired-end alignment modes.")
(supported-systems '("x86_64-linux"))
(license license:gpl3+)))
+(define-public tophat
+ (package
+ (name "tophat")
+ (version "2.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://ccb.jhu.edu/software/tophat/downloads/tophat-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "168zlzykq622zbgkh90a90f1bdgsxkscq2zxzbj8brq80hbjpyp7"))
+ (patches (list (search-patch "tophat-build-with-later-seqan.patch")))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove bundled SeqAn and samtools
+ (delete-file-recursively "src/SeqAn-1.3")
+ (delete-file-recursively "src/samtools-0.1.18")
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:parallel-build? #f ; not supported
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'use-system-samtools
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/Makefile.in"
+ (("(noinst_LIBRARIES = )\\$\\(SAMLIB\\)" _ prefix) prefix)
+ (("\\$\\(SAMPROG\\): \\$\\(SAMLIB\\)") "")
+ (("SAMPROG = samtools_0\\.1\\.18") "")
+ (("\\$\\(samtools_0_1_18_SOURCES\\)") "")
+ (("am__EXEEXT_1 = samtools_0\\.1\\.18\\$\\(EXEEXT\\)") ""))
+ (substitute* '("src/common.cpp"
+ "src/tophat.py")
+ (("samtools_0.1.18") (which "samtools")))
+ (substitute* '("src/common.h"
+ "src/bam2fastx.cpp")
+ (("#include \"bam.h\"") "#include <samtools/bam.h>")
+ (("#include \"sam.h\"") "#include <samtools/sam.h>"))
+ (substitute* '("src/bwt_map.h"
+ "src/map2gtf.h"
+ "src/align_status.h")
+ (("#include <bam.h>") "#include <samtools/bam.h>")
+ (("#include <sam.h>") "#include <samtools/sam.h>"))
+ #t)))))
+ (inputs
+ `(("boost" ,boost)
+ ("bowtie" ,bowtie)
+ ("samtools" ,samtools-0.1)
+ ("ncurses" ,ncurses)
+ ("python" ,python-2)
+ ("perl" ,perl)
+ ("zlib" ,zlib)
+ ("seqan" ,seqan)))
+ (home-page "http://ccb.jhu.edu/software/tophat/index.shtml")
+ (synopsis "Spliced read mapper for RNA-Seq data")
+ (description
+ "TopHat is a fast splice junction mapper for nucleotide sequence
+reads produced by the RNA-Seq method. It aligns RNA-Seq reads to
+mammalian-sized genomes using the ultra high-throughput short read
+aligner Bowtie, and then analyzes the mapping results to identify
+splice junctions between exons.")
+ ;; TopHat is released under the Boost Software License, Version 1.0
+ ;; See https://github.com/infphilo/tophat/issues/11#issuecomment-121589893
+ (license license:boost1.0)))
+
(define-public bwa
(package
(name "bwa")
@@ -915,6 +982,64 @@ files between different genome assemblies. It supports most commonly used
file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
(license license:gpl2+)))
+(define-public cufflinks
+ (package
+ (name "cufflinks")
+ (version "2.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://cole-trapnell-lab.github.io/"
+ "cufflinks/assets/downloads/cufflinks-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1bnm10p8m7zq4qiipjhjqb24csiqdm1pwc8c795z253r2xk6ncg8"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (list
+ ;; The includes for "eigen" are located in a subdirectory.
+ (string-append "EIGEN_CPPFLAGS="
+ "-I" (assoc-ref %build-inputs "eigen")
+ "/include/eigen3/")
+ ;; Cufflinks must be linked with various boost libraries.
+ (string-append "LDFLAGS="
+ (string-join '("-lboost_system"
+ "-lboost_serialization"
+ "-lboost_thread"))))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-search-for-bam
+ (lambda _
+ (substitute* '("ax_bam.m4"
+ "configure"
+ "src/hits.h")
+ (("<bam/sam\\.h>") "<samtools/sam.h>")
+ (("<bam/bam\\.h>") "<samtools/bam.h>")
+ (("<bam/version\\.hpp>") "<samtools/version.h>"))
+ #t)))
+ #:configure-flags
+ (list (string-append "--with-bam="
+ (assoc-ref %build-inputs "samtools")))))
+ (inputs
+ `(("eigen" ,eigen)
+ ("samtools" ,samtools-0.1)
+ ("htslib" ,htslib)
+ ("boost" ,boost)
+ ("python" ,python-2)
+ ("zlib" ,zlib)))
+ (home-page "http://cole-trapnell-lab.github.io/cufflinks/")
+ (synopsis "Transcriptome assembly and RNA-Seq expression analysis")
+ (description
+ "Cufflinks assembles RNA transcripts, estimates their abundances,
+and tests for differential expression and regulation in RNA-Seq
+samples. It accepts aligned RNA-Seq reads and assembles the
+alignments into a parsimonious set of transcripts. Cufflinks then
+estimates the relative abundances of these transcripts based on how
+many reads support each one, taking into account biases in library
+preparation protocols.")
+ (license license:boost1.0)))
+
(define-public cutadapt
(package
(name "cutadapt")
@@ -3016,40 +3141,107 @@ optimized for modern read lengths of 100 bases or higher, and takes advantage
of these reads to align data quickly through a hash-based indexing scheme.")
(license license:asl2.0)))
+(define-public sortmerna
+ (package
+ (name "sortmerna")
+ (version "2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/biocore/sortmerna/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1670a92x1vvkacnvgr2i5xac3ls6lp4pc3n0bccnmllsnymggcf0"))))
+ (build-system gnu-build-system)
+ (outputs '("out" ;for binaries
+ "db")) ;for sequence databases
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (db (assoc-ref outputs "db"))
+ (share
+ (string-append db "/share/sortmerna/rRNA_databases")))
+ (install-file "sortmerna" bin)
+ (install-file "indexdb_rna" bin)
+ (for-each (lambda (file)
+ (install-file file share))
+ (find-files "rRNA_databases" ".*fasta"))
+ #t))))))
+ (home-page "http://bioinfo.lifl.fr/RNA/sortmerna")
+ (synopsis "Biological sequence analysis tool for NGS reads")
+ (description
+ "SortMeRNA is a biological sequence analysis tool for filtering, mapping
+and operational taxonomic unit (OTU) picking of next generation
+sequencing (NGS) reads. The core algorithm is based on approximate seeds and
+allows for fast and sensitive analyses of nucleotide sequences. The main
+application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
+ (license license:lgpl3)))
+
(define-public star
(package
(name "star")
- (version "2.4.2a")
+ (version "2.5.1b")
(source (origin
(method url-fetch)
- (uri (string-append
- "https://github.com/alexdobin/STAR/archive/STAR_"
- version ".tar.gz"))
+ (uri (string-append "https://github.com/alexdobin/STAR/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1c3rnm7r5l0kl3d04gl1g7938xqf1c2l0mla87rlplqg1hcns5mc"))
+ "0wzcfhkg10apnh0y73xlarfa79xxwxdizicbdl11wb48awk44iq4"))
(modules '((guix build utils)))
(snippet
- '(substitute* "source/Makefile"
- (("/bin/rm") "rm")))))
+ '(begin
+ (substitute* "source/Makefile"
+ (("/bin/rm") "rm"))
+ ;; Remove pre-built binaries and bundled htslib sources.
+ (delete-file-recursively "bin/MacOSX_x86_64")
+ (delete-file-recursively "bin/Linux_x86_64")
+ (delete-file-recursively "source/htslib")
+ #t))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ;no check target
#:make-flags '("STAR")
#:phases
- (alist-cons-after
- 'unpack 'enter-source-dir (lambda _ (chdir "source"))
- (alist-replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
- (install-file "STAR" bin)))
- (alist-delete
- 'configure %standard-phases)))))
+ (modify-phases %standard-phases
+ (add-after 'unpack 'enter-source-dir
+ (lambda _ (chdir "source") #t))
+ (add-after 'enter-source-dir 'do-not-use-bundled-htslib
+ (lambda _
+ (substitute* "Makefile"
+ (("(Depend.list: \\$\\(SOURCES\\) parametersDefault\\.xxd) htslib"
+ _ prefix) prefix))
+ (substitute* '("BAMfunctions.cpp"
+ "signalFromBAM.h"
+ "bam_cat.h"
+ "bam_cat.c"
+ "STAR.cpp"
+ "bamRemoveDuplicates.cpp")
+ (("#include \"htslib/([^\"]+\\.h)\"" _ header)
+ (string-append "#include <" header ">")))
+ (substitute* "IncludeDefine.h"
+ (("\"htslib/(htslib/[^\"]+.h)\"" _ header)
+ (string-append "<" header ">")))
+ #t))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+ (install-file "STAR" bin))
+ #t))
+ (delete 'configure))))
(native-inputs
`(("vim" ,vim))) ; for xxd
(inputs
- `(("zlib" ,zlib)))
+ `(("htslib" ,htslib)
+ ("zlib" ,zlib)))
(home-page "https://github.com/alexdobin/STAR")
(synopsis "Universal RNA-seq aligner")
(description
@@ -4002,7 +4194,7 @@ genomic intervals. In addition, it can use BAM or BigWig files as input.")
(define-public r-qtl
(package
(name "r-qtl")
- (version "1.37-11")
+ (version "1.38-4")
(source
(origin
(method url-fetch)
@@ -4010,7 +4202,7 @@ genomic intervals. In addition, it can use BAM or BigWig files as input.")
version ".tar.gz"))
(sha256
(base32
- "0h20d36mww7ljp51pfs66xq33yq4b4fwq9nsh02dpmfhlaxgx1xi"))))
+ "0rv9xhp8lyldpgwxqirhyjqvg07dr5x4x1x2jpyj37dada9ccyx3"))))
(build-system r-build-system)
(home-page "http://rqtl.org/")
(synopsis "R package for analyzing QTL experiments in genetics")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 967580d158..94383dba20 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (guix build-system glib-or-gtk)
#:use-module ((guix licenses) #:prefix l:)
#:use-module (gnu packages libevent)
@@ -33,6 +35,7 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages check)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages python)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages tls))
@@ -148,3 +151,44 @@ full encryption, DHT, PEX, and Magnet Links. It can also be controlled via
XML-RPC over SCGI.")
(home-page "https://github.com/rakshasa/rtorrent")
(license l:gpl2+)))
+
+(define-public transmission-remote-cli
+ (package
+ (name "transmission-remote-cli")
+ (version "1.7.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/fagga/"
+ "transmission-remote-cli/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1y0hkpcjf6jw9xig8yf484hbhy63nip0pkchx401yxj81m25l4z9"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2 ; only supports Python 2
+ #:tests? #f ; no test suite
+ #:phases (modify-phases %standard-phases
+ ;; The software is just a Python script that must be
+ ;; copied into place.
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/share/man/man1"))
+ ;; FIXME install zsh completions
+ (completions (string-append out "/etc/bash_completion.d")))
+ (install-file "transmission-remote-cli" bin)
+ (install-file "transmission-remote-cli.1" man)
+ (install-file
+ (string-append
+ "completion/bash/"
+ "transmission-remote-cli-bash-completion.sh")
+ completions)))))))
+ (synopsis "Console client for the Transmission BitTorrent daemon")
+ (description "Transmission-remote-cli is a console client, with a curses
+interface, for the Transmission BitTorrent daemon.")
+ (home-page "https://github.com/fagga/transmission-remote-cli")
+ (license l:gpl3+)))
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index dc94f97657..72fd993037 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -169,7 +169,7 @@ tools that process C/C++ code.")
(_ "UNSUPPORTED"))))
(package
(name "american-fuzzy-lop")
- (version "1.86b") ;It seems all releases have the 'b' suffix
+ (version "1.96b") ;It seems all releases have the 'b' suffix
(source
(origin
(method url-fetch)
@@ -177,7 +177,7 @@ tools that process C/C++ code.")
"afl-" version ".tgz"))
(sha256
(base32
- "1by9ncf6lgcyibzqwyla34jv64sd66mn8zhgjz2pcgsds51qwn0r"))))
+ "0z7j231p6v2h1dxxijgdzj1lq1lxr8cxllwf6iyv7p4ki5pv1gh3"))))
(build-system gnu-build-system)
(inputs
`(("custom-qemu"
@@ -190,11 +190,13 @@ tools that process C/C++ code.")
;; afl only supports using a single afl-qemu-trace executable, so
;; we only build qemu for the native target.
(arguments
- `(#:configure-flags
- (list (string-append "--target-list=" ,machine "-linux-user"))
- #:modules ((srfi srfi-1)
+ `(#:modules ((srfi srfi-1)
,@%gnu-build-system-modules)
,@(substitute-keyword-arguments (package-arguments qemu-2.3.0)
+ ((#:configure-flags config-flags)
+ ``(,(string-append "--target-list=" ,machine "-linux-user")
+ ,@(remove (λ (f) (string-prefix? "--target-list=" f))
+ ,config-flags)))
((#:phases qemu-phases)
`(modify-phases ,qemu-phases
(add-after
@@ -236,8 +238,8 @@ tools that process C/C++ code.")
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((qemu (assoc-ref inputs "custom-qemu"))
(out (assoc-ref outputs "out")))
- (copy-file (string-append qemu "/bin/qemu-" ,machine)
- (string-append out "/bin/afl-qemu-trace"))
+ (symlink (string-append qemu "/bin/qemu-" ,machine)
+ (string-append out "/bin/afl-qemu-trace"))
#t)))
(delete 'check))))
(supported-systems (fold delete
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 8357dad21e..ef07f30adf 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -63,14 +65,14 @@ and BOOTP/TFTP for network booting of diskless machines.")
(define-public bind-utils
(package
(name "bind-utils")
- (version "9.10.3-P2")
+ (version "9.10.3-P3")
(source (origin
(method url-fetch)
(uri (string-append "http://ftp.isc.org/isc/bind9/" version
"/bind-" version ".tar.gz"))
(sha256
(base32
- "1kbfzml37sx4r2xi4gq48ji8w5kckd1f6gdn6pk6njqdmh8ijv2a"))))
+ "10yblk8qbb85qxakzdjy5qmqvqj4rlcqsqvlkriglampzg8i0239"))))
(build-system gnu-build-system)
(inputs
;; it would be nice to add GeoIP and gssapi once there is package
@@ -89,20 +91,24 @@ and BOOTP/TFTP for network booting of diskless machines.")
(assoc-ref %build-inputs "mysql"))
(string-append "--with-pkcs11="
(assoc-ref %build-inputs "p11-kit")))
+ #:modules ((srfi srfi-1)
+ (srfi srfi-26)
+ ,@%gnu-build-system-modules)
#:phases
- (alist-replace
- 'build
- (lambda _
- (and (zero? (system* "make" "-C" "lib/dns"))
- (zero? (system* "make" "-C" "lib/isc"))
- (zero? (system* "make" "-C" "lib/bind9"))
- (zero? (system* "make" "-C" "lib/isccfg"))
- (zero? (system* "make" "-C" "lib/lwres"))
- (zero? (system* "make" "-C" "bin/dig"))))
- (alist-replace
- 'install
- (lambda _ (zero? (system* "make" "-C" "bin/dig" "install")))
- %standard-phases))))
+ (let ((libs '("dns" "isc" "bind9" "isccfg" "lwres"))
+ (bins '("dig" "nsupdate")))
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (every (lambda (dir)
+ (zero? (system* "make" "-C" dir)))
+ (append (map (cut string-append "lib/" <>) libs)
+ (map (cut string-append "bin/" <>) bins)))))
+ (replace 'install
+ (lambda _
+ (every (lambda (dir)
+ (zero? (system* "make" "-C" dir "install")))
+ (map (cut string-append "bin/" <>) bins))))))))
(home-page "https://www.isc.org/downloads/bind/")
(synopsis "Tools for querying nameservers")
(description
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 718e8b3e50..a551c1d075 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -60,7 +60,7 @@
(define-public calibre
(package
(name "calibre")
- (version "2.48.0")
+ (version "2.49.0")
(source
(origin
(method url-fetch)
@@ -69,7 +69,7 @@
version ".tar.xz"))
(sha256
(base32
- "0bjzw806czqxkhq9qqkhff8bhfc428pijkidb1h6gr47jqdp4hpg"))
+ "0jc476pg07c0nwccprhwgjdlvvb2fdzza9xrjqzc0c42c5v7qzxa"))
;; Remove non-free or doubtful code, see
;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
(modules '((guix build utils)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 9fdcd42a27..3fec6c6fc7 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -271,7 +271,7 @@ Libraries with some extra bells and whistles.")
(define-public enlightenment
(package
(name "enlightenment")
- (version "0.20.2")
+ (version "0.20.3")
(source (origin
(method url-fetch)
(uri
@@ -279,7 +279,7 @@ Libraries with some extra bells and whistles.")
name "/" name "-" version ".tar.xz"))
(sha256
(base32
- "0faxky7lqd133jjjkr4c40kwwjhqc51ww10l3yy63671rfjhj424"))))
+ "19z3bwdzwpzwi330l5g5mj7xy6wy8xrc39zivjhm0d1ql3fh649j"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-mount-eeze")))
diff --git a/gnu/packages/grue-hunter.scm b/gnu/packages/grue-hunter.scm
index 29404fcfb4..71eee96daf 100644
--- a/gnu/packages/grue-hunter.scm
+++ b/gnu/packages/grue-hunter.scm
@@ -32,7 +32,7 @@
(source
(origin
(method url-fetch)
- (uri (string-append "http://jxself.org/" name ".tar.gz"))
+ (uri (string-append "https://jxself.org/" name ".tar.gz"))
(sha256
(base32
"1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
diff --git a/gnu/packages/lego.scm b/gnu/packages/lego.scm
new file mode 100644
index 0000000000..d47be5dfb4
--- /dev/null
+++ b/gnu/packages/lego.scm
@@ -0,0 +1,67 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages lego)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages flex))
+
+(define-public nqc
+ (package
+ (name "nqc")
+ (version "3.1.r6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://bricxcc.sourceforge.net/nqc/release/"
+ "nqc-" version ".tgz"))
+ (sha256
+ (base32
+ "0rp7pzr8xrdxpv75c2mi8zszzz2ypli4vvzxiic7mbrryrafdmdz"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)))
+ (arguments
+ '(#:tests? #f ;no tests
+ #:make-flags (list (string-append "PREFIX=" %output))
+ #:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'rm-generated
+ ;; Regenerating compiler/lexer.cpp avoids an 'undefined
+ ;; reference to `isatty(int)'' error.
+ (lambda _
+ (for-each delete-file
+ '("compiler/lexer.cpp"
+ "compiler/parse.cpp"))
+ #t))
+ (add-after 'unpack 'deal-with-tarbomb
+ (lambda _
+ (chdir "..") ;tarbomb
+ #t)))))
+ (home-page "http://bricxcc.sourceforge.net/nqc/")
+ (synopsis "C-like language for Lego's MINDSTORMS")
+ (description
+ "Not Quite C (NQC) is a simple language for programming several Lego
+MINDSTORMS products. The preprocessor and control structures of NQC are very
+similar to C. NQC is not a general purpose language -- there are many
+restrictions that stem from limitations of the standard RCX firmware.")
+ (license license:mpl1.0)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 3ca4ef1868..6500aa51f5 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -2,10 +2,10 @@
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;;
;;; This file is part of GNU Guix.
@@ -286,7 +286,9 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
(uri (linux-libre-urls version))
(sha256
(base32
- "1839xsaifs7vvyblzin8jps0gqi10xmz1l9p4x0j27vmdj39jgpm"))))
+ "1839xsaifs7vvyblzin8jps0gqi10xmz1l9p4x0j27vmdj39jgpm"))
+ (patches
+ (list (search-patch "linux-libre-CVE-2016-0728.patch")))))
(build-system gnu-build-system)
(supported-systems '("x86_64-linux" "i686-linux"))
(native-inputs `(("perl" ,perl)
@@ -1234,7 +1236,7 @@ processes currently causing I/O.")
(define-public fuse
(package
(name "fuse")
- (version "2.9.4")
+ (version "2.9.5")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@@ -1245,7 +1247,7 @@ processes currently causing I/O.")
"/fuse-" version ".tar.gz")))
(sha256
(base32
- "1qbwp63a2bp0bchabkwiyzszi9x5krlk2pwk2is6g35gyszw1sbb"))))
+ "1dfvbi1p57svbv2sfnbqwpnsk219spvjnlapf35azhgzqlf3g7sp"))))
(build-system gnu-build-system)
(inputs `(("util-linux" ,util-linux)))
(arguments
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 1057564b39..d41479e83f 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -8,7 +8,8 @@
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -519,7 +520,7 @@ MailCore 2.")
(define-public claws-mail
(package
(name "claws-mail")
- (version "3.13.1")
+ (version "3.13.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -527,7 +528,7 @@ MailCore 2.")
".tar.xz"))
(sha256
(base32
- "049av7r0xhjjjm1p93l2ns3xisvn125v3ncqar23cqjzgcichg5d"))))
+ "1l8ankx0qpq1ix1an8viphcf11ksh53jsrm1xjmq8cjbh5910wva"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("bogofilter" ,bogofilter)
@@ -1014,4 +1015,32 @@ compatibility shims for the @command{sendmail}, @command{mailq}, and
@command{newaliases} commands.")
(license gpl2+)))
+(define-public fdm
+ (package
+ (name "fdm")
+ (version "1.9")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/nicm/fdm/releases/download/"
+ version "/fdm-"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "054rscijahiza5f9qha79rg3siji3bk5mk10f8c2vqx7m4w6qh8n"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("tdb" ,tdb)
+ ("openssl" ,openssl)
+ ("zlib" ,zlib)))
+ (home-page "https://github.com/nicm/fdm")
+ (synopsis "Mail Retrieval Agent (MRA) and Mail Delivery Agent (MDA)")
+ (description "fdm is a program designed to fetch mail from POP3
+or IMAP servers, or receive local mail from stdin, and
+deliver it in various ways.")
+ (license
+ ;; Why point to a source file? Well, all the individual files have a
+ ;; copy of this license in their headers, but there's no seprate file
+ ;; with that information.
+ (non-copyleft "https://github.com/nicm/fdm/blob/master/command.c"))))
+
;;; mail.scm ends here
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 956045d420..23c7a0bbdd 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
@@ -425,7 +425,7 @@ was initially a fork of xmpppy, but is using non-blocking sockets.")
(define-public gajim
(package
(name "gajim")
- (version "0.16.4")
+ (version "0.16.5")
(source (origin
(method url-fetch)
(uri (string-append "https://gajim.org/downloads/"
@@ -433,10 +433,17 @@ was initially a fork of xmpppy, but is using non-blocking sockets.")
"/gajim-" version ".tar.bz2"))
(sha256
(base32
- "0zyfs7q1qg8iqszr8l1gb18gqla6zrrfsgpmbxblpi9maqxas5i1"))))
+ "14fhcqnkqygh91132dnf1idayj4r3iqbwb44sd3mxv20n6ribh55"))))
(build-system gnu-build-system)
(arguments
- `(#:phases
+ `(;; The only check done by gajim-0.16.x is to check that the
+ ;; translations are up-to-date, and in 0.16.5 they are not, so
+ ;; "make check" fails. Therefore, we disable tests for now.
+ ;;
+ ;; XXX TODO Try re-enabling tests in gajim-0.16.6 or later.
+ ;;
+ #:tests? #f
+ #:phases
(modify-phases %standard-phases
(add-after 'install 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index bfc90c1eeb..a60ba4bccd 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;;
;;; This file is part of GNU Guix.
@@ -328,7 +328,11 @@ you to define complex tempo maps for entire songs or performances.")
music. Music is input in a text file containing control sequences which are
interpreted by LilyPond to produce the final document. It is extendable with
Guile.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+
+ ;; On armhf and mips64el, building the documentation sometimes leads to
+ ;; more than an hour of silence, so double the max silent time.
+ (properties `((max-silent-time . 7200)))))
(define-public non-sequencer
;; The latest tagged release is three years old and uses a custom build
@@ -957,7 +961,7 @@ capabilities, custom envelopes, effects, etc.")
(define-public yoshimi
(package
(name "yoshimi")
- (version "1.3.7.1")
+ (version "1.3.8.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/yoshimi/"
@@ -965,7 +969,7 @@ capabilities, custom envelopes, effects, etc.")
"/yoshimi-" version ".tar.bz2"))
(sha256
(base32
- "13xc1x8jrr2rn26jx4dini692ww3771d5j5xf7f56ixqr7mmdhvz"))))
+ "0wl4ln6v1nkkx56kfah23chyrhga2vi93i82g0s200c4s4184xr8"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; there are no tests
@@ -1036,3 +1040,41 @@ graphically in the terminal. It is built on a full-featured subtractive
synthesis engine. Notes and parameter changes may be entered via MIDI or the
computer's keyboard.")
(license license:gpl3+)))
+
+(define-public qtractor
+ (package
+ (name "qtractor")
+ (version "0.7.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://downloads.sourceforge.net/qtractor/"
+ "qtractor-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1vy4297myyqk0k58nzybgvgklckhngpdcnmp98k0rq98dirclbl7"))))
+ (build-system gnu-build-system)
+ (arguments `(#:tests? #f)) ; no "check" target
+ (inputs
+ `(("qt" ,qt)
+ ("alsa-lib" ,alsa-lib)
+ ("jack" ,jack-1)
+ ("libsndfile" ,libsndfile)
+ ("ladspa" ,ladspa)
+ ("lv2" ,lv2)
+ ("lilv" ,lilv)
+ ("suil" ,suil)
+ ("libsamplerate" ,libsamplerate)
+ ("libvorbis" ,libvorbis)
+ ("libmad" ,libmad)
+ ("rubberband" ,rubberband)
+ ("liblo" ,liblo)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "http://qtractor.sourceforge.net/")
+ (synopsis "Audio/MIDI multi-track sequencer")
+ (description
+ "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
+JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
+follows a traditional multi-track tape recorder control paradigm.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index f58f3d9328..352e2b47e0 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,7 +28,7 @@
(define-public nano
(package
(name "nano")
- (version "2.5.0")
+ (version "2.5.1")
(source
(origin
(method url-fetch)
@@ -36,7 +36,7 @@
version ".tar.gz"))
(sha256
(base32
- "1vl9bim56k1b4zwc3icxp46w6pn6gb042j1h4jlz1jklxxpkwcpz"))))
+ "1piv8prj6w3rvsrrx41ra8c10b8fzkgjhnm6399lsgqqpw0wlvz0"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gnu-gettext)
diff --git a/gnu/packages/patches/arb-ldconfig.patch b/gnu/packages/patches/arb-ldconfig.patch
new file mode 100644
index 0000000000..478ec5a6f0
--- /dev/null
+++ b/gnu/packages/patches/arb-ldconfig.patch
@@ -0,0 +1,22 @@
+diff -u -r arb-2.8.1.orig/configure arb-2.8.1/configure
+--- arb-2.8.1.orig/configure 2015-12-31 17:30:01.000000000 +0100
++++ arb-2.8.1/configure 2016-01-20 16:41:41.336726596 +0100
+@@ -647,6 +647,7 @@
+ echo "ARB_SHARED=$SHARED" >> Makefile
+ echo "ARB_LIB=$ARB_LIB" >> Makefile
+ echo "ARB_LIBNAME=$ARB_LIBNAME" >> Makefile
++echo "ARB_MAJOR=$ARB_MAJOR" >> Makefile
+ echo "ARB_SOLIB=$ARB_SOLIB" >> Makefile
+ echo "EXEEXT=$EXEEXT" >> Makefile
+ echo "PREFIX=$PREFIX" >> Makefile
+diff -u -r arb-2.8.1.orig/Makefile.in arb-2.8.1/Makefile.in
+--- arb-2.8.1.orig/Makefile.in 2015-12-31 17:30:01.000000000 +0100
++++ arb-2.8.1/Makefile.in 2016-01-20 16:30:32.575298517 +0100
+@@ -101,6 +101,7 @@
+ $(LDCONFIG) -n "$(CURDIR)"; \
+ fi
+ ln -sf "$(ARB_LIB)" "$(ARB_LIBNAME)"; \
++ ln -sf "$(ARB_LIB)" "$(ARB_LIBNAME).$(ARB_MAJOR)"; \
+
+ libarb.a: $(OBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces
+ $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir); BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) static || exit $$?;))
diff --git a/gnu/packages/patches/linux-libre-CVE-2016-0728.patch b/gnu/packages/patches/linux-libre-CVE-2016-0728.patch
new file mode 100644
index 0000000000..254d6c1aea
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-CVE-2016-0728.patch
@@ -0,0 +1,84 @@
+Copied from
+https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=23567fd052a9abb6d67fe8e7a9ccdd9800a540f2
+
+From 23567fd052a9abb6d67fe8e7a9ccdd9800a540f2 Mon Sep 17 00:00:00 2001
+From: Yevgeny Pats <yevgeny@perception-point.io>
+Date: Tue, 19 Jan 2016 22:09:04 +0000
+Subject: KEYS: Fix keyring ref leak in join_session_keyring()
+
+This fixes CVE-2016-0728.
+
+If a thread is asked to join as a session keyring the keyring that's already
+set as its session, we leak a keyring reference.
+
+This can be tested with the following program:
+
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <keyutils.h>
+
+ int main(int argc, const char *argv[])
+ {
+ int i = 0;
+ key_serial_t serial;
+
+ serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING,
+ "leaked-keyring");
+ if (serial < 0) {
+ perror("keyctl");
+ return -1;
+ }
+
+ if (keyctl(KEYCTL_SETPERM, serial,
+ KEY_POS_ALL | KEY_USR_ALL) < 0) {
+ perror("keyctl");
+ return -1;
+ }
+
+ for (i = 0; i < 100; i++) {
+ serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING,
+ "leaked-keyring");
+ if (serial < 0) {
+ perror("keyctl");
+ return -1;
+ }
+ }
+
+ return 0;
+ }
+
+If, after the program has run, there something like the following line in
+/proc/keys:
+
+3f3d898f I--Q--- 100 perm 3f3f0000 0 0 keyring leaked-keyring: empty
+
+with a usage count of 100 * the number of times the program has been run,
+then the kernel is malfunctioning. If leaked-keyring has zero usages or
+has been garbage collected, then the problem is fixed.
+
+Reported-by: Yevgeny Pats <yevgeny@perception-point.io>
+Signed-off-by: David Howells <dhowells@redhat.com>
+Acked-by: Don Zickus <dzickus@redhat.com>
+Acked-by: Prarit Bhargava <prarit@redhat.com>
+Acked-by: Jarod Wilson <jarod@redhat.com>
+Signed-off-by: James Morris <james.l.morris@oracle.com>
+---
+ security/keys/process_keys.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/security/keys/process_keys.c b/security/keys/process_keys.c
+index a3f85d2..e6d50172 100644
+--- a/security/keys/process_keys.c
++++ b/security/keys/process_keys.c
+@@ -794,6 +794,7 @@ long join_session_keyring(const char *name)
+ ret = PTR_ERR(keyring);
+ goto error2;
+ } else if (keyring == new->session_keyring) {
++ key_put(keyring);
+ ret = 0;
+ goto error2;
+ }
+--
+cgit v0.12
+
diff --git a/gnu/packages/patches/tophat-build-with-later-seqan.patch b/gnu/packages/patches/tophat-build-with-later-seqan.patch
new file mode 100644
index 0000000000..fc742e2a7d
--- /dev/null
+++ b/gnu/packages/patches/tophat-build-with-later-seqan.patch
@@ -0,0 +1,24 @@
+This patch resolves a build failure when building TopHat 2.1.0 with SeqAn 1.4.
+This is the relevant part of a patch originally posted here:
+https://lists.fu-berlin.de/pipermail/seqan-dev/2014-July/msg00001.html
+
+--- a/src/segment_juncs.cpp
++++ b/src/segment_juncs.cpp
+@@ -2050,10 +2050,13 @@ void juncs_from_ref_segs(RefSequenceTabl
+ typedef map<uint32_t, IntronMotifs> MotifMap;
+
+ MotifMap ims;
+-
+- seqan::DnaStringReverseComplement rev_donor_dinuc(donor_dinuc);
+- seqan::DnaStringReverseComplement rev_acceptor_dinuc(acceptor_dinuc);
+-
++
++ typedef seqan::ModifiedString<
++ seqan::ModifiedString<seqan::DnaString const, seqan::ModView<seqan::FunctorComplement<seqan::Dna> > >,
++ seqan::ModReverse> ConstDnaStringReverseComplement;
++ ConstDnaStringReverseComplement rev_donor_dinuc(donor_dinuc);
++ ConstDnaStringReverseComplement rev_acceptor_dinuc(acceptor_dinuc);
++
+ if (talkative)
+ fprintf(stderr, "Collecting potential splice sites in islands\n");
+
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index c10d1cbfc7..be48b25c9a 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -339,13 +339,13 @@ security, and applying best practice development processes.")
(define-public acme
(package
(name "acme")
- (version "0.1.1")
+ (version "0.2.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(sha256
(base32
- "1yv0gy8akaqp5p2wjpfj8r5i0da04a9qdmlh06rczdkrmk6q680w"))))
+ "1xcbywzrwrj2cmqhaj4k6b11wfkbm3i7za2k9j1sd74rs1zh5abl"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2))
@@ -371,13 +371,13 @@ security, and applying best practice development processes.")
(define-public letsencrypt
(package
(name "letsencrypt")
- (version "0.1.1")
+ (version "0.2.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "letsencrypt" version))
(sha256
(base32
- "1kia3wk66lxyi2fghp9sd7cqgr5qiwdfayz153hi4wpa3q1q8rwf"))))
+ "0q57ylx00b6kl9zvawgag5yl03vlv1cjhp18xm96682pdibbgjci"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index e6e8876597..5fb8f954aa 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,14 +37,14 @@
(define-public tor
(package
(name "tor")
- (version "0.2.7.5")
+ (version "0.2.7.6")
(source (origin
(method url-fetch)
(uri (string-append "https://www.torproject.org/dist/tor-"
version ".tar.gz"))
(sha256
(base32
- "0pxayvcab4cb107ynbpzx4g0qyr1mjfba2an76wdx6dxn56rwakx"))))
+ "0p8hjlfi8dwghlyjif5s0q98cmpgz9kn9jja25430l04z5wqcfj9"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2))) ; for tests
@@ -103,7 +104,7 @@ rejects UDP traffic from the application you're using.")
(define-public privoxy
(package
(name "privoxy")
- (version "3.0.21")
+ (version "3.0.24")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/ijbswa/Sources/"
@@ -111,7 +112,7 @@ rejects UDP traffic from the application you're using.")
version "-stable-src.tar.gz"))
(sha256
(base32
- "1f6xb7aa47p90c26vqaw74y6drs9gpnhxsgby3mx0awdjh0ydisy"))))
+ "04mhkz5g713i2crvjd6s783hhrlsjjjlfb9llbaf13ghg3fgd0d3"))))
(build-system gnu-build-system)
(arguments
'(;; The default 'sysconfdir' is $out/etc; change that to
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 1edf9f8d9c..e0626cb3ac 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
@@ -1004,7 +1004,7 @@ modification time.")
(define-public myrepos
(package
(name "myrepos")
- (version "1.20151022")
+ (version "1.20160123")
(source
(origin
(method url-fetch)
@@ -1013,7 +1013,7 @@ modification time.")
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0c93lqsngpsxsca7nygk4qhidr40ijgih86q81x1mfcwbs0gbds8"))))
+ (base32 "1723cg5haplz2w9dwdzp6ds1ip33cx3awmj4wnb0h4yq171v5lqk"))))
(build-system gnu-build-system)
(inputs
`(("perl" ,perl)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 12f10b9915..636f76584d 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
+;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
@@ -1265,6 +1265,39 @@ functionality of the system is provided via an assortment of ready to use
tools, XML authoring components, and an extensible plug-in based API.")
(license license:lgpl2.1+)))
+(define-public v4l-utils
+ (package
+ (name "v4l-utils")
+ (version "1.8.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://linuxtv.org/downloads/v4l-utils"
+ "/v4l-utils-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0cqv8drw0z0kfmz4f50a8kzbrz6vbj6j6q78030hgshr7yq1jqig"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags
+ (list (string-append "--with-udevdir="
+ (assoc-ref %outputs "out")
+ "/lib/udev"))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("glu" ,glu)
+ ("libjpeg" ,libjpeg)
+ ("libx11" ,libx11)
+ ("qt" ,qt)
+ ("eudev" ,eudev)))
+ (synopsis "Realtime video capture utilities for Linux")
+ (description "The v4l-utils provide a series of libraries and utilities to
+be used for realtime video capture via Linux-specific APIs.")
+ (home-page "https://linuxtv.org/wiki/index.php/V4l-utils")
+ ;; libv4l2 is LGPL2.1+, while utilities are GPL2 only.
+ (license (list license:lgpl2.1+ license:gpl2))))
+
(define-public obs
(package
(name "obs")
@@ -1293,6 +1326,7 @@ tools, XML authoring components, and an extensible plug-in based API.")
("mesa" ,mesa)
("pulseaudio" ,pulseaudio)
("qt" ,qt)
+ ("v4l-utils" ,v4l-utils)
("zlib" ,zlib)))
(synopsis "Live streaming software")
(description "Open Broadcaster Software provides a graphical interface for
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index bc2294e58c..cca0c14c1b 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -293,7 +293,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about
(define opus
(package
(name "opus")
- (version "1.1.1")
+ (version "1.1.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -301,7 +301,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about
".tar.gz"))
(sha256
(base32
- "07iplfwim26b6k1bqjyciaqvihps9rk5gi8385axa83ppmbgz14v"))))
+ "1z87x5c5x951lhnm70iqr2gqn15wns5cqsw8nnkvl48jwdw00a8f"))))
(build-system gnu-build-system)
(synopsis "Versatile audio codec")
(description
@@ -349,7 +349,7 @@ decoding .opus files.")
(define opusfile
(package
(name "opusfile")
- (version "0.6")
+ (version "0.7")
(source (origin
(method url-fetch)
(uri (string-append
@@ -357,7 +357,7 @@ decoding .opus files.")
".tar.gz"))
(sha256
(base32
- "19iys2kld75k0210b807i4illrdmj3cmmnrgxlc9y4vf6mxp2a14"))))
+ "00f3wwjv3hxwg05g22s6mkkxikz80ljsn70g39cmi43jph9ysawy"))))
(build-system gnu-build-system)
(propagated-inputs
`(("opus" ,opus)))
@@ -409,7 +409,7 @@ things in between.")
(define-public libshout
(package
(name "libshout")
- (version "2.3.1")
+ (version "2.4.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -417,7 +417,7 @@ things in between.")
name "-" version ".tar.gz"))
(sha256
(base32
- "0vlj4dxfxg06xhvv0z2zjjlrjh5di2m28w7v16zcygsy99mmyg6g"))))
+ "0kgjpf8jkgyclw11nilxi8vyjk4s8878x23qyxnvybbgqbgbib7k"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm
index 49a737f090..909abeffe6 100644
--- a/gnu/services/avahi.scm
+++ b/gnu/services/avahi.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -26,7 +26,8 @@
#:use-module (gnu packages admin)
#:use-module (guix records)
#:use-module (guix gexp)
- #:export (avahi-service))
+ #:export (avahi-service
+ avahi-service-type))
;;; Commentary:
;;;
diff --git a/gnu/system.scm b/gnu/system.scm
index ee0280c069..edcfaf66fe 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -79,6 +79,7 @@
operating-system-locale-libcs
operating-system-mapped-devices
operating-system-file-systems
+ operating-system-store-file-system
operating-system-activation-script
operating-system-derivation
@@ -678,12 +679,34 @@ listed in OS. The C library expects to find it under
(package-version kernel)
" (alpha)"))
+(define (store-file-system file-systems)
+ "Return the file system object among FILE-SYSTEMS that contains the store."
+ (match (filter (lambda (fs)
+ (and (file-system-mount? fs)
+ (not (memq 'bind-mount (file-system-flags fs)))
+ (string-prefix? (file-system-mount-point fs)
+ (%store-prefix))))
+ file-systems)
+ ((and candidates (head . tail))
+ (reduce (lambda (fs1 fs2)
+ (if (> (string-length (file-system-mount-point fs1))
+ (string-length (file-system-mount-point fs2)))
+ fs1
+ fs2))
+ head
+ candidates))))
+
+(define (operating-system-store-file-system os)
+ "Return the file system that contains the store of OS."
+ (store-file-system (operating-system-file-systems os)))
+
(define* (operating-system-grub.cfg os #:optional (old-entries '()))
"Return the GRUB configuration file for OS. Use OLD-ENTRIES to populate the
\"old entries\" menu."
(mlet* %store-monad
((system (operating-system-derivation os))
(root-fs -> (operating-system-root-file-system os))
+ (store-fs -> (operating-system-store-file-system os))
(kernel -> (operating-system-kernel os))
(root-device -> (if (eq? 'uuid (file-system-title root-fs))
(uuid->string (file-system-device root-fs))
@@ -698,7 +721,8 @@ listed in OS. The C library expects to find it under
"/boot")
(operating-system-kernel-arguments os)))
(initrd #~(string-append #$system "/initrd"))))))
- (grub-configuration-file (operating-system-bootloader os) entries
+ (grub-configuration-file (operating-system-bootloader os)
+ store-fs entries
#:old-entries old-entries)))
(define (operating-system-parameters-file os)
diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index 5b824820b1..45b46cae6f 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.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.
;;;
@@ -25,6 +25,7 @@
#:use-module (guix gexp)
#:use-module (guix download)
#:use-module (gnu artwork)
+ #:use-module (gnu system file-systems)
#:autoload (gnu packages grub) (grub)
#:autoload (gnu packages inkscape) (inkscape)
#:autoload (gnu packages imagemagick) (imagemagick)
@@ -153,10 +154,12 @@ WIDTH/HEIGHT, or #f if none was found."
(with-monad %store-monad
(return #f)))))
-(define (eye-candy config system port)
+(define (eye-candy config root-fs system port)
"Return in %STORE-MONAD a gexp that writes to PORT (a port-valued gexp) the
'grub.cfg' part concerned with graphics mode, background images, colors, and
-all that."
+all that. ROOT-FS is a file-system object denoting the root file system where
+the store is. SYSTEM must be the target system string---e.g.,
+\"x86_64-linux\"."
(define setup-gfxterm-body
;; Intel systems need to be switched into graphics mode, whereas most
;; other modern architectures have no other mode and therefore don't need
@@ -179,15 +182,18 @@ all that."
(string-append (symbol->string (assoc-ref colors 'fg)) "/"
(symbol->string (assoc-ref colors 'bg)))))
+ (define font-file
+ #~(string-append #$grub "/share/grub/unicode.pf2"))
+
(mlet* %store-monad ((image (grub-background-image config)))
(return (and image
#~(format #$port "
function setup_gfxterm {~a}
# Set 'root' to the partition that contains /gnu/store.
-search --file --set ~a/share/grub/unicode.pf2
+~a
-if loadfont ~a/share/grub/unicode.pf2; then
+if loadfont ~a; then
setup_gfxterm
fi
@@ -200,7 +206,9 @@ else
set menu_color_highlight=white/blue
fi~%"
#$setup-gfxterm-body
- #$grub #$grub
+ #$(grub-root-search root-fs font-file)
+ #$font-file
+
#$image
#$(theme-colors grub-theme-color-normal)
#$(theme-colors grub-theme-color-highlight))))))
@@ -210,13 +218,31 @@ fi~%"
;;; Configuration file.
;;;
-(define* (grub-configuration-file config entries
+(define (grub-root-search root-fs file)
+ "Return the GRUB 'search' command to look for ROOT-FS, which contains FILE,
+a gexp. The result is a gexp that can be inserted in the grub.cfg-generation
+code."
+ (case (file-system-title root-fs)
+ ;; Preferably refer to ROOT-FS by its UUID or label. This is more
+ ;; efficient and less ambiguous, see <>.
+ ((uuid)
+ (format #f "search --fs-uuid --set ~a"
+ (uuid->string (file-system-device root-fs))))
+ ((label)
+ (format #f "search --label --set ~a"
+ (file-system-device root-fs)))
+ (else
+ ;; As a last resort, look for any device containing FILE.
+ #~(format #f "search --file --set ~a" #$file))))
+
+(define* (grub-configuration-file config store-fs entries
#:key
(system (%current-system))
(old-entries '()))
"Return the GRUB configuration file corresponding to CONFIG, a
-<grub-configuration> object. OLD-ENTRIES is taken to be a list of menu
-entries corresponding to old generations of the system."
+<grub-configuration> object, and where the store is available at STORE-FS, a
+<file-system> object. OLD-ENTRIES is taken to be a list of menu entries
+corresponding to old generations of the system."
(define linux-image-name
(if (string-prefix? "mips" system)
"vmlinuz"
@@ -229,18 +255,18 @@ entries corresponding to old generations of the system."
(match-lambda
(($ <menu-entry> label linux arguments initrd)
#~(format port "menuentry ~s {
- # Set 'root' to the partition that contains the kernel.
- search --file --set ~a/~a~%
-
+ ~a
linux ~a/~a ~a
initrd ~a
}~%"
#$label
- #$linux #$linux-image-name
+ #$(grub-root-search store-fs
+ #~(string-append #$linux "/"
+ #$linux-image-name))
#$linux #$linux-image-name (string-join (list #$@arguments))
#$initrd))))
- (mlet %store-monad ((sugar (eye-candy config system #~port)))
+ (mlet %store-monad ((sugar (eye-candy config store-fs system #~port)))
(define builder
#~(call-with-output-file #$output
(lambda (port)
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 1c30da89c7..f36e9482cf 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -29,12 +29,14 @@
#:use-module (guix base32)
#:use-module ((guix download) #:select (download-to-store))
#:use-module (guix import utils)
- #:use-module ((guix build-system r) #:select (cran-uri))
+ #:use-module ((guix build-system r) #:select (cran-uri bioconductor-uri))
#:use-module (guix upstream)
#:use-module (guix packages)
#:use-module (gnu packages)
#:export (cran->guix-package
- %cran-updater))
+ bioconductor->guix-package
+ %cran-updater
+ %bioconductor-updater))
;;; Commentary:
;;;
@@ -108,6 +110,15 @@ package definition."
`((,type (,'quasiquote ,(format-inputs package-inputs)))))))
(define %cran-url "http://cran.r-project.org/web/packages/")
+(define %bioconductor-url "http://bioconductor.org/packages/")
+
+;; The latest Bioconductor release is 3.2. Bioconductor packages should be
+;; updated together.
+(define %bioconductor-svn-url
+ (string-append "https://readonly:readonly@"
+ "hedgehog.fhcrc.org/bioconductor/branches/RELEASE_3_2/"
+ "madman/Rpacks/"))
+
(define (fetch-description base-url name)
"Return an alist of the contents of the DESCRIPTION file for the R package
@@ -136,24 +147,31 @@ empty list when the FIELD cannot be found."
(string-any char-set:whitespace item)))
(map string-trim-both items))))))
-(define (description->package meta)
- "Return the `package' s-expression for a CRAN package from the alist META,
-which was derived from the R package's DESCRIPTION file."
+(define (description->package repository meta)
+ "Return the `package' s-expression for an R package published on REPOSITORY
+from the alist META, which was derived from the R package's DESCRIPTION file."
(define (guix-name name)
(if (string-prefix? "r-" name)
(string-downcase name)
(string-append "r-" (string-downcase name))))
- (let* ((name (assoc-ref meta "Package"))
+ (let* ((base-url (case repository
+ ((cran) %cran-url)
+ ((bioconductor) %bioconductor-url)))
+ (uri-helper (case repository
+ ((cran) cran-uri)
+ ((bioconductor) bioconductor-uri)))
+ (name (assoc-ref meta "Package"))
(synopsis (assoc-ref meta "Title"))
(version (assoc-ref meta "Version"))
(license (string->license (assoc-ref meta "License")))
;; Some packages have multiple home pages. Some have none.
(home-page (match (listify meta "URL")
((url rest ...) url)
- (_ (string-append %cran-url name))))
- (source-url (match (cran-uri name version)
+ (_ (string-append base-url name))))
+ (source-url (match (uri-helper name version)
((url rest ...) url)
+ ((? string? url) url)
(_ #f)))
(tarball (with-store store (download-to-store store source-url)))
(sysdepends (map string-downcase (listify meta "SystemRequirements")))
@@ -167,26 +185,32 @@ which was derived from the R package's DESCRIPTION file."
(version ,version)
(source (origin
(method url-fetch)
- (uri (cran-uri ,name version))
+ (uri (,(procedure-name uri-helper) ,name version))
(sha256
(base32
,(bytevector->nix-base32-string (file-sha256 tarball))))))
- (properties ,`(,'quasiquote ((,'upstream-name . ,name))))
+ ,@(if (not (equal? (string-append "r-" name)
+ (guix-name name)))
+ `((properties ,`(,'quasiquote ((,'upstream-name . ,name)))))
+ '())
(build-system r-build-system)
,@(maybe-inputs sysdepends)
,@(maybe-inputs propagate 'propagated-inputs)
(home-page ,(if (string-null? home-page)
- (string-append %cran-url name)
+ (string-append base-url name)
home-page))
(synopsis ,synopsis)
(description ,(beautify-description (assoc-ref meta "Description")))
(license ,license))))
-(define (cran->guix-package package-name)
- "Fetch the metadata for PACKAGE-NAME from cran.r-project.org, and return the
-`package' s-expression corresponding to that package, or #f on failure."
- (let ((module-meta (fetch-description %cran-url package-name)))
- (and=> module-meta description->package)))
+(define* (cran->guix-package package-name #:optional (repo 'cran))
+ "Fetch the metadata for PACKAGE-NAME from REPO and return the `package'
+s-expression corresponding to that package, or #f on failure."
+ (let* ((url (case repo
+ ((cran) %cran-url)
+ ((bioconductor) %bioconductor-svn-url)))
+ (module-meta (fetch-description url package-name)))
+ (and=> module-meta (cut description->package repo <>))))
;;;
@@ -212,7 +236,7 @@ which was derived from the R package's DESCRIPTION file."
(_ #f)))
(_ #f)))))
-(define (latest-release package)
+(define (latest-cran-release package)
"Return an <upstream-source> for the latest release of PACKAGE."
(define upstream-name
@@ -229,16 +253,55 @@ which was derived from the R package's DESCRIPTION file."
(version version)
(urls (cran-uri upstream-name version))))))
+(define (latest-bioconductor-release package)
+ "Return an <upstream-source> for the latest release of PACKAGE."
+
+ (define upstream-name
+ (package->upstream-name (specification->package package)))
+
+ (define meta
+ (fetch-description %bioconductor-svn-url upstream-name))
+
+ (and meta
+ (let ((version (assoc-ref meta "Version")))
+ ;; Bioconductor does not provide signatures.
+ (upstream-source
+ (package package)
+ (version version)
+ (urls (bioconductor-uri upstream-name version))))))
+
(define (cran-package? package)
"Return true if PACKAGE is an R package from CRAN."
- ;; Assume all R packages are available on CRAN.
- (string-prefix? "r-" (package-name package)))
+ (and (string-prefix? "r-" (package-name package))
+ (match (and=> (package-source package) origin-uri)
+ ((? string? uri)
+ (string-prefix? "mirror://cran" uri))
+ ((? list? uris)
+ (any (cut string-prefix? "mirror://cran" <>) uris))
+ (_ #f))))
+
+(define (bioconductor-package? package)
+ "Return true if PACKAGE is an R package from Bioconductor."
+ (and (string-prefix? "r-" (package-name package))
+ (match (and=> (package-source package) origin-uri)
+ ((? string? uri)
+ (string-prefix? "http://bioconductor.org" uri))
+ ((? list? uris)
+ (any (cut string-prefix? "http://bioconductor.org" <>) uris))
+ (_ #f))))
(define %cran-updater
(upstream-updater
(name 'cran)
(description "Updater for CRAN packages")
(pred cran-package?)
- (latest latest-release)))
+ (latest latest-cran-release)))
+
+(define %bioconductor-updater
+ (upstream-updater
+ (name 'bioconductor)
+ (description "Updater for Bioconductor packages")
+ (pred bioconductor-package?)
+ (latest latest-bioconductor-release)))
;;; cran.scm ends here
diff --git a/guix/import/gem.scm b/guix/import/gem.scm
index 3c42052f1a..4b2a253130 100644
--- a/guix/import/gem.scm
+++ b/guix/import/gem.scm
@@ -77,7 +77,7 @@ the package."
(bytevector-u8-set! bv i (read-byte i))
(loop (1+ i)))))))
-(define (make-gem-sexp name version hash home-page description
+(define (make-gem-sexp name version hash home-page synopsis description
dependencies licenses)
"Return the `package' s-expression for a Ruby package with the given NAME,
VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES."
@@ -101,7 +101,7 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES."
(,'unquote
,(string->symbol name))))
dependencies)))))
- (synopsis ,description) ; nothing better to use
+ (synopsis ,synopsis)
(description ,description)
(home-page ,home-page)
(license ,(match licenses
@@ -117,6 +117,7 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES."
(let ((name (assoc-ref package "name"))
(version (assoc-ref package "version"))
(hash (assoc-ref package "sha"))
+ (synopsis (assoc-ref package "info")) ; nothing better to use
(description (beautify-description
(assoc-ref package "info")))
(home-page (assoc-ref package "homepage_uri"))
@@ -129,5 +130,5 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES."
"runtime")))
(licenses (map string->license
(assoc-ref package "licenses"))))
- (make-gem-sexp name version hash home-page
+ (make-gem-sexp name version hash home-page synopsis
description dependencies licenses)))))
diff --git a/guix/licenses.scm b/guix/licenses.scm
index 9ace7f543b..1def1acb3e 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,7 +50,7 @@
imlib2
ipa
lgpl2.0 lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3 lgpl3+
- mpl1.1 mpl2.0
+ mpl1.0 mpl1.1 mpl2.0
ms-pl
ncsa
openldap2.8 openssl
@@ -302,6 +303,11 @@ at URI, which may be a file:// URI pointing the package's tree."
"https://www.gnu.org/licenses/lgpl.html"
"https://www.gnu.org/licenses/license-list#LGPLv3"))
+(define mpl1.0
+ (license "MPL 1.0"
+ "http://www.mozilla.org/MPL/1.0/"
+ "https://www.gnu.org/licenses/license-list.html#MPL"))
+
(define mpl1.1
(license "MPL 1.1"
"http://directory.fsf.org/wiki/License:MPLv1.1"
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 9193ad32b2..7ca2c6ebc8 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.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 © 2013 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
@@ -153,6 +153,8 @@ options handled by 'set-build-options-from-command-line', and listed in
(display (_ "
-K, --keep-failed keep build tree of failed builds"))
(display (_ "
+ -k, --keep-going keep going when some of the derivations fail"))
+ (display (_ "
-n, --dry-run do not build the derivations"))
(display (_ "
--fallback fall back to building when the substituter fails"))
@@ -183,6 +185,7 @@ options handled by 'set-build-options-from-command-line', and listed in
;; TODO: Add more options.
(set-build-options store
#:keep-failed? (assoc-ref opts 'keep-failed?)
+ #:keep-going? (assoc-ref opts 'keep-going?)
#:rounds (assoc-ref opts 'rounds)
#:build-cores (or (assoc-ref opts 'cores) 0)
#:max-build-jobs (or (assoc-ref opts 'max-jobs) 1)
@@ -214,6 +217,11 @@ options handled by 'set-build-options-from-command-line', and listed in
(apply values
(alist-cons 'keep-failed? #t result)
rest)))
+ (option '(#\k "keep-going") #f #f
+ (lambda (opt name arg result . rest)
+ (apply values
+ (alist-cons 'keep-going? #t result)
+ rest)))
(option '("rounds") #t #f
(lambda (opt name arg result . rest)
(apply values
diff --git a/guix/scripts/import/cran.scm b/guix/scripts/import/cran.scm
index 8d001ac494..ace1123b90 100644
--- a/guix/scripts/import/cran.scm
+++ b/guix/scripts/import/cran.scm
@@ -42,6 +42,8 @@
(display (_ "Usage: guix import cran PACKAGE-NAME
Import and convert the CRAN package for PACKAGE-NAME.\n"))
(display (_ "
+ -a, --archive=ARCHIVE specify the archive repository"))
+ (display (_ "
-h, --help display this help and exit"))
(display (_ "
-V, --version display version information and exit"))
@@ -57,6 +59,10 @@ Import and convert the CRAN package for PACKAGE-NAME.\n"))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix import cran")))
+ (option '(#\a "archive") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'repo (string->symbol arg)
+ (alist-delete 'repo result))))
%standard-import-options))
@@ -82,7 +88,8 @@ Import and convert the CRAN package for PACKAGE-NAME.\n"))
(reverse opts))))
(match args
((package-name)
- (let ((sexp (cran->guix-package package-name)))
+ (let ((sexp (cran->guix-package package-name
+ (or (assoc-ref opts 'repo) 'cran))))
(unless sexp
(leave (_ "failed to download description for package '~a'~%")
package-name))
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index a5834d12cc..f9e3f31a03 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -195,6 +195,7 @@ unavailable optional dependencies such as Guile-JSON."
%gnome-updater
%elpa-updater
%cran-updater
+ %bioconductor-updater
((guix import pypi) => %pypi-updater)))
(define (lookup-updater name)
diff --git a/tests/cran.scm b/tests/cran.scm
index 0a4a2fdd8f..83d2e7f554 100644
--- a/tests/cran.scm
+++ b/tests/cran.scm
@@ -86,16 +86,6 @@ Date/Publication: 2015-07-14 14:15:16
'()
((@@ (guix import cran) listify) simple-alist "BadList"))
-(test-equal "beautify-description: use double spacing"
- "This is a package. It is great. Trust me Mr. Hendrix."
- ((@@ (guix import cran) beautify-description)
- "This is a package. It is great. Trust me Mr. Hendrix."))
-
-(test-equal "beautify-description: transform fragment into sentence"
- "This package provides a function to establish world peace"
- ((@@ (guix import cran) beautify-description)
- "A function to establish world peace"))
-
(test-assert "description->package"
;; Replace network resources with sample data.
(mock ((guix build download) url-fetch
@@ -107,7 +97,7 @@ Date/Publication: 2015-07-14 14:15:16
("mirror://cran/src/contrib/My-Example_1.2.3.tar.gz"
"source")
(_ (error "Unexpected URL: " url))))))))
- (match ((@@ (guix import cran) description->package) description-alist)
+ (match ((@@ (guix import cran) description->package) 'cran description-alist)
(('package
('name "r-my-example")
('version "1.2.3")
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 64cc8a94c9..db96e26ab1 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -151,6 +151,33 @@
;; the contents.
(valid-path? %store (derivation->output-path drv)))))
+(test-assert "derivation fails but keep going"
+ ;; In keep-going mode, 'build-derivations' should fail because of D1, but it
+ ;; must return only after D2 has succeeded.
+ (with-store store
+ (let* ((d1 (derivation %store "fails"
+ %bash `("-c" "false")
+ #:inputs `((,%bash))))
+ (d2 (build-expression->derivation %store "sleep-then-succeed"
+ `(begin
+ ,(random-text)
+ ;; XXX: Hopefully that's long
+ ;; enough that D1 has already
+ ;; failed.
+ (sleep 2)
+ (mkdir %output)))))
+ (set-build-options %store
+ #:use-substitutes? #f
+ #:keep-going? #t)
+ (guard (c ((nix-protocol-error? c)
+ (and (= 100 (nix-protocol-error-status c))
+ (string-contains (nix-protocol-error-message c)
+ (derivation-file-name d1))
+ (not (valid-path? %store (derivation->output-path d1)))
+ (valid-path? %store (derivation->output-path d2)))))
+ (build-derivations %store (list d1 d2))
+ #f))))
+
(test-assert "identical files are deduplicated"
(let* ((build1 (add-text-to-store %store "one.sh"
"echo hello, world > \"$out\"\n"
diff --git a/tests/gem.scm b/tests/gem.scm
index 9efbda31fe..ebce809840 100644
--- a/tests/gem.scm
+++ b/tests/gem.scm
@@ -69,7 +69,7 @@
(("bundler" ('unquote 'bundler))
("ruby-bar" ('unquote 'ruby-bar)))))
('synopsis "A cool gem")
- ('description "A cool gem")
+ ('description "This package provides a cool gem")
('home-page "https://example.com")
('license ('list 'expat 'asl2.0)))
#t)
diff --git a/tests/import-utils.scm b/tests/import-utils.scm
new file mode 100644
index 0000000000..08365816d4
--- /dev/null
+++ b/tests/import-utils.scm
@@ -0,0 +1,39 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (test-import-utils)
+ #:use-module (guix tests)
+ #:use-module (guix import utils)
+ #:use-module (srfi srfi-64))
+
+(test-begin "import-utils")
+
+(test-equal "beautify-description: use double spacing"
+ "This is a package. It is great. Trust me Mr. Hendrix."
+ (beautify-description
+ "This is a package. It is great. Trust me Mr. Hendrix."))
+
+(test-equal "beautify-description: transform fragment into sentence"
+ "This package provides a function to establish world peace"
+ (beautify-description "A function to establish world peace"))
+
+(test-end "import-utils")
+
+
+(exit (= (test-runner-fail-count (test-runner-current)) 0))
diff --git a/tests/lint.scm b/tests/lint.scm
index df82593a9e..b8dad13ceb 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
@@ -19,6 +19,9 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+;; Avoid interference.
+(unsetenv "http_proxy")
+
(define-module (test-lint)
#:use-module (guix tests)
#:use-module (guix download)
diff --git a/tests/publish.scm b/tests/publish.scm
index 4d72fdc468..0b92390900 100644
--- a/tests/publish.scm
+++ b/tests/publish.scm
@@ -16,6 +16,9 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+;; Avoid interference.
+(unsetenv "http_proxy")
+
(define-module (test-publish)
#:use-module (guix scripts publish)
#:use-module (guix tests)
@@ -62,6 +65,7 @@
(connect conn AF_INET (inet-pton AF_INET "127.0.0.1") 6789))
(loop))))
+
(test-begin "publish")
(test-equal "/nix-cache-info"
diff --git a/tests/system.scm b/tests/system.scm
new file mode 100644
index 0000000000..7e016a610b
--- /dev/null
+++ b/tests/system.scm
@@ -0,0 +1,77 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (test-system)
+ #:use-module (gnu)
+ #:use-module (guix store)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-64))
+
+;; Test the (gnu system) module.
+
+(define %root-fs
+ (file-system
+ (device "my-root")
+ (title 'label)
+ (mount-point "/")
+ (type "ext4")))
+
+(define %os
+ (operating-system
+ (host-name "komputilo")
+ (timezone "Europe/Berlin")
+ (locale "en_US.utf8")
+ (bootloader (grub-configuration (device "/dev/sdX")))
+ (file-systems (cons %root-fs %base-file-systems))
+
+ (users %base-user-accounts)))
+
+(test-begin "system")
+
+(test-assert "operating-system-store-file-system"
+ ;; %BASE-FILE-SYSTEMS defines a bind-mount for /gnu/store, but this
+ ;; shouldn't be a problem.
+ (eq? %root-fs
+ (operating-system-store-file-system %os)))
+
+(test-assert "operating-system-store-file-system, prefix"
+ (let* ((gnu (file-system
+ (device "foobar")
+ (mount-point (dirname (%store-prefix)))
+ (type "ext5")))
+ (os (operating-system
+ (inherit %os)
+ (file-systems (cons* gnu %root-fs
+ %base-file-systems)))))
+ (eq? gnu (operating-system-store-file-system os))))
+
+(test-assert "operating-system-store-file-system, store"
+ (let* ((gnu (file-system
+ (device "foobar")
+ (mount-point (%store-prefix))
+ (type "ext5")))
+ (os (operating-system
+ (inherit %os)
+ (file-systems (cons* gnu %root-fs
+ %base-file-systems)))))
+ (eq? gnu (operating-system-store-file-system os))))
+
+(test-end)
+
+
+(exit (= (test-runner-fail-count (test-runner-current)) 0))