summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--doc/emacs.texi26
-rw-r--r--doc/guix.texi61
-rw-r--r--emacs.am3
-rw-r--r--emacs/guix-info.el6
-rw-r--r--emacs/guix-license.el130
-rw-r--r--emacs/guix-list.el27
-rw-r--r--emacs/guix-main.scm63
-rw-r--r--emacs/guix-messages.el15
-rw-r--r--emacs/guix-read.el11
-rw-r--r--emacs/guix-ui-generation.el2
-rw-r--r--emacs/guix-ui-package.el24
-rw-r--r--emacs/guix-ui-system-generation.el2
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/admin.scm29
-rw-r--r--gnu/packages/adns.scm29
-rw-r--r--gnu/packages/aria2.scm49
-rw-r--r--gnu/packages/aspell.scm6
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/bioinformatics.scm12
-rw-r--r--gnu/packages/bittorrent.scm67
-rw-r--r--gnu/packages/check.scm25
-rw-r--r--gnu/packages/compression.scm29
-rw-r--r--gnu/packages/enlightenment.scm40
-rw-r--r--gnu/packages/ruby.scm841
-rw-r--r--gnu/packages/tls.scm4
-rw-r--r--gnu/packages/web.scm4
-rw-r--r--gnu/services/base.scm6
-rw-r--r--gnu/services/dmd.scm6
-rw-r--r--gnu/system.scm1
30 files changed, 1426 insertions, 101 deletions
diff --git a/NEWS b/NEWS
index 0084394941..010789e2e4 100644
--- a/NEWS
+++ b/NEWS
@@ -14,9 +14,10 @@ Please send Guix bug reports to bug-guix@gnu.org.
** Package management
+*** Emacs interface for licenses
*** Emacs interface for system generations
*** Emacs interface for hydra.gnu.org
-*** Changes in Emacs interface variables
+*** Changes in Emacs interface variables and faces
In the following names, BUFFER-TYPE means "info" or "list";
ENTRY-TYPE means "package", "output" or "generation".
@@ -30,6 +31,7 @@ ENTRY-TYPE means "package", "output" or "generation".
- guix-buffer-name-function -> guix-ui-buffer-name-function
- guix-update-after-operation -> guix-ui-update-after-operation
- guix-search-params -> guix-package-search-params
+- guix-BUFFER-TYPE-file-path (face) -> guix-BUFFER-TYPE-file-name
**** Replaced
- guix-list-column-format, guix-list-column-value-methods ->
diff --git a/doc/emacs.texi b/doc/emacs.texi
index eb470ab4ca..8020e0ace3 100644
--- a/doc/emacs.texi
+++ b/doc/emacs.texi
@@ -9,6 +9,7 @@ Guix convenient and fun.
@menu
* Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}.
* Package Management: Emacs Package Management. Managing packages and generations.
+* Licenses: Emacs Licenses. Interface for licenses of Guix packages.
* Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands.
* Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names.
* Build Log Mode: Emacs Build Log. Highlighting Guix build logs.
@@ -158,6 +159,9 @@ but cannot be found among available packages).
@item M-x guix-packages-by-name
Display package(s) with the specified name.
+@item M-x guix-packages-by-license
+Display package(s) with the specified license.
+
@item M-x guix-search-by-regexp
Search for packages by a specified regexp. By default ``name'',
``synopsis'' and ``description'' of the packages will be searched. This
@@ -355,6 +359,7 @@ emacs, The GNU Emacs Manual}) which can be used to:
@item install/remove a package;
@item jump to a package location;
@item browse home page of a package;
+@item browse license URL;
@item describe packages from ``Inputs'' fields.
@end itemize
@@ -516,6 +521,27 @@ Various settings for ``info'' buffers.
@end table
+@node Emacs Licenses
+@section Licenses
+
+If you want to browse the URL of a particular license, or to look at a
+list of licenses, you may use the following commands:
+
+@table @kbd
+
+@item M-x guix-browse-license-url
+Choose a license from a completion list to browse its URL using
+@code{browse-url} function (@pxref{Browse-URL,,, emacs, The GNU Emacs
+Manual}).
+
+@item M-x guix-licenses
+Display a list of available licenses. You can press @kbd{@key{RET}}
+there to display packages with this license in the same way as @kbd{M-x
+guix-packages-by-license} would do (@pxref{Emacs Commands}).
+
+@end table
+
+
@node Emacs Popup Interface
@section Popup Interface
diff --git a/doc/guix.texi b/doc/guix.texi
index a650a55d51..a6ba9485eb 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -15,8 +15,8 @@ Copyright @copyright{} 2013, 2014 Andreas Enge@*
Copyright @copyright{} 2013 Nikita Karetnikov@*
Copyright @copyright{} 2015 Mathieu Lirzin@*
Copyright @copyright{} 2014 Pierre-Antoine Rault@*
-Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer
-Copyright @copyright{} 2015 Leo Famulari
+Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@*
+Copyright @copyright{} 2015, 2016 Leo Famulari
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -111,6 +111,7 @@ Emacs Interface
* Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}.
* Package Management: Emacs Package Management. Managing packages and generations.
+* Licenses: Emacs Licenses. Interface for licenses of Guix packages.
* Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands.
* Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names.
* Build Log Mode: Emacs Build Log. Highlighting Guix build logs.
@@ -174,6 +175,7 @@ System Configuration
* Initial RAM Disk:: Linux-Libre bootstrapping.
* GRUB Configuration:: Configuring the boot loader.
* Invoking guix system:: Instantiating a system configuration.
+* Running GuixSD in a VM:: How to run GuixSD in a virtual machine.
* Defining Services:: Adding new service definitions.
Services
@@ -5693,6 +5695,7 @@ instance to support new system services.
* Initial RAM Disk:: Linux-Libre bootstrapping.
* GRUB Configuration:: Configuring the boot loader.
* Invoking guix system:: Instantiating a system configuration.
+* Running GuixSD in a VM:: How to run GuixSD in a virtual machine.
* Defining Services:: Adding new service definitions.
@end menu
@@ -9194,7 +9197,8 @@ in @var{file} that stands alone. Use the @option{--image-size} option
to specify the size of the image.
When using @code{vm-image}, the returned image is in qcow2 format, which
-the QEMU emulator can efficiently use.
+the QEMU emulator can efficiently use. @xref{Running GuixSD in a VM},
+for more information on how to run the image in a virtual machine.
When using @code{disk-image}, a raw disk image is produced; it can be
copied as is to a USB stick, for instance. Assuming @code{/dev/sdc} is
@@ -9333,6 +9337,57 @@ graph} of dmd services of the operating system defined in @var{file}.
@end table
+@node Running GuixSD in a VM
+@subsection Running GuixSD in a virtual machine
+
+One way to run GuixSD in a virtual machine (VM) is to build a GuixSD
+virtual machine image using @command{guix system vm-image}
+(@pxref{Invoking guix system}). The returned image is in qcow2 format,
+which the @uref{http://qemu.org/, QEMU emulator} can efficiently use.
+
+To run the image in QEMU, copy it out of the store (@pxref{The Store})
+and give yourself permission to write to the copy. When invoking QEMU,
+you must choose a system emulator that is suitable for your hardware
+platform. Here is a minimal QEMU invocation that will boot the result
+of @command{guix system vm-image} on x86_64 hardware:
+
+@example
+$ qemu-system-x86_64 \
+ -net user -net nic,model=virtio \
+ -enable-kvm -m 256 /tmp/qemu-image
+@end example
+
+Here is what each of these options means:
+
+@table @code
+@item qemu-system-x86_64
+This specifies the hardware platform to emulate. This should match the
+host.
+
+@item -net user
+Enable the unprivileged user-mode network stack. The guest OS can
+access the host but not vice versa. This is the simplest way to get the
+guest OS online. If you don't choose a network stack, the boot will
+fail.
+
+@item -net nic,model=virtio
+You must create a network interface of a given model. If you don't
+create a NIC, the boot will fail. Assuming your hardware platform is
+x86_64, you can get a list of available NIC models by running
+@command{qemu-system-x86_64 -net nic,model=help}.
+
+@item -enable-kvm
+If your system has hardware virtualization extensions, enabling the
+Linux kernel's virtual machine support (KVM) will make things run
+faster.
+
+@item -m 256
+RAM available to the guest OS, in mebibytes. Defaults to 128@tie{}MiB,
+which may be insufficent for some operations.
+
+@item /tmp/qemu-image
+The file name of the qcow2 image.
+@end table
@node Defining Services
@subsection Defining Services
diff --git a/emacs.am b/emacs.am
index d0d4dfb9bd..6af9596ce9 100644
--- a/emacs.am
+++ b/emacs.am
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
+# Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
#
# This file is part of GNU Guix.
#
@@ -37,6 +37,7 @@ ELFILES = \
emacs/guix-hydra-jobset.el \
emacs/guix-info.el \
emacs/guix-init.el \
+ emacs/guix-license.el \
emacs/guix-list.el \
emacs/guix-messages.el \
emacs/guix-pcomplete.el \
diff --git a/emacs/guix-info.el b/emacs/guix-info.el
index 644533eb29..6aefd2f3f6 100644
--- a/emacs/guix-info.el
+++ b/emacs/guix-info.el
@@ -42,9 +42,9 @@
"Face used for titles of parameters."
:group 'guix-info-faces)
-(defface guix-info-file-path
+(defface guix-info-file-name
'((t :inherit link))
- "Face used for file paths."
+ "Face used for file names."
:group 'guix-info-faces)
(defface guix-info-url
@@ -337,7 +337,7 @@ BUTTON-OR-FACE is a button type)."
(define-button-type 'guix-file
:supertype 'guix
- 'face 'guix-info-file-path
+ 'face 'guix-info-file-name
'help-echo "Find file"
'action (lambda (btn)
(guix-find-file (button-label btn))))
diff --git a/emacs/guix-license.el b/emacs/guix-license.el
new file mode 100644
index 0000000000..a99d7af98d
--- /dev/null
+++ b/emacs/guix-license.el
@@ -0,0 +1,130 @@
+;;; guix-license.el --- Licenses
+
+;; Copyright © 2016 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides the code to work with licenses of Guix packages.
+
+;;; Code:
+
+(require 'guix-buffer)
+(require 'guix-list)
+(require 'guix-info)
+(require 'guix-read)
+(require 'guix-backend)
+(require 'guix-guile)
+
+(guix-define-entry-type license)
+
+(defun guix-lookup-license-url (license)
+ "Return URL of a LICENSE."
+ (or (guix-eval-read (guix-make-guile-expression
+ 'lookup-license-uri license))
+ (error "Hm, I don't know URL of '%s' license" license)))
+
+(defun guix-license-get-entries (search-type &rest args)
+ "Receive 'license' entries.
+SEARCH-TYPE may be one of the following symbols: `all', `id', `name'."
+ (guix-eval-read
+ (apply #'guix-make-guile-expression
+ 'license-entries search-type args)))
+
+(defun guix-license-get-display (search-type &rest args)
+ "Search for licenses and show results."
+ (apply #'guix-list-get-display-entries
+ 'license search-type args))
+
+
+;;; License 'info'
+
+(guix-info-define-interface license
+ :buffer-name "*Guix License Info*"
+ :get-entries-function 'guix-license-get-entries
+ :format '((name ignore (simple guix-info-heading))
+ ignore
+ guix-license-insert-packages-button
+ (url ignore (simple guix-url))
+ guix-license-insert-comment)
+ :titles '((url . "URL")))
+
+(declare-function guix-packages-by-license "guix-ui-package")
+
+(defun guix-license-insert-packages-button (entry)
+ "Insert button to display packages by license ENTRY."
+ (guix-info-insert-action-button
+ "Packages"
+ (lambda (btn)
+ (guix-packages-by-license (button-get btn 'license)))
+ "Show packages with this license"
+ 'license (guix-entry-value entry 'name)))
+
+(defun guix-license-insert-comment (entry)
+ "Insert 'comment' of a license ENTRY."
+ (let ((comment (guix-entry-value entry 'comment)))
+ (if (and comment
+ (string-match-p "^http" comment))
+ (guix-info-insert-value-simple comment 'guix-url)
+ (guix-info-insert-title-simple
+ (guix-info-param-title 'license 'comment))
+ (guix-info-insert-value-indent comment))))
+
+
+;;; License 'list'
+
+(guix-list-define-interface license
+ :buffer-name "*Guix Licenses*"
+ :get-entries-function 'guix-license-get-entries
+ :describe-function 'guix-license-list-describe
+ :format '((name nil 40 t)
+ (url guix-list-get-url 50 t))
+ :titles '((name . "License"))
+ :sort-key '(name))
+
+(let ((map guix-license-list-mode-map))
+ (define-key map (kbd "RET") 'guix-license-list-show-packages))
+
+(defun guix-license-list-describe (ids)
+ "Describe licenses with IDS (list of identifiers)."
+ (guix-buffer-display-entries
+ (guix-entries-by-ids ids (guix-buffer-current-entries))
+ 'info 'license (cl-list* 'id ids) 'add))
+
+(defun guix-license-list-show-packages ()
+ "Display packages with the license at point."
+ (interactive)
+ (guix-packages-by-license (guix-list-current-id)))
+
+
+;;; Interactive commands
+
+;;;###autoload
+(defun guix-browse-license-url (license)
+ "Browse URL of a LICENSE."
+ (interactive (list (guix-read-license-name)))
+ (browse-url (guix-lookup-license-url license)))
+
+;;;###autoload
+(defun guix-licenses ()
+ "Display licenses of the Guix packages."
+ (interactive)
+ (guix-license-get-display 'all))
+
+(provide 'guix-license)
+
+;;; guix-license.el ends here
diff --git a/emacs/guix-list.el b/emacs/guix-list.el
index 7e57f42cb2..c91c67cb29 100644
--- a/emacs/guix-list.el
+++ b/emacs/guix-list.el
@@ -33,9 +33,14 @@
(guix-define-buffer-type list)
-(defface guix-list-file-path
- '((t :inherit guix-info-file-path))
- "Face used for file paths."
+(defface guix-list-file-name
+ '((t :inherit guix-info-file-name))
+ "Face used for file names."
+ :group 'guix-list-faces)
+
+(defface guix-list-url
+ '((t :inherit guix-info-url))
+ "Face used for URLs."
:group 'guix-list-faces)
(defface guix-list-time
@@ -214,14 +219,22 @@ VAL may be nil."
(guix-get-string (guix-get-time-string seconds)
'guix-list-time))
-(defun guix-list-get-file-path (path &optional _)
- "Return PATH button specification for `tabulated-list-entries'."
- (list path
- 'face 'guix-list-file-path
+(defun guix-list-get-file-name (file-name &optional _)
+ "Return FILE-NAME button specification for `tabulated-list-entries'."
+ (list file-name
+ 'face 'guix-list-file-name
'action (lambda (btn) (find-file (button-label btn)))
'follow-link t
'help-echo "Find file"))
+(defun guix-list-get-url (url &optional _)
+ "Return URL button specification for `tabulated-list-entries'."
+ (list url
+ 'face 'guix-list-url
+ 'action (lambda (btn) (browse-url (button-label btn)))
+ 'follow-link t
+ 'help-echo "Browse URL"))
+
;;; 'List' lines
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index 236c882e3c..335686ed25 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -403,6 +403,12 @@ MATCH-PARAMS is a list of parameters that REGEXP can match."
(let ((re (make-regexp regexp regexp/icase)))
(matching-packages (cut package-match? <> re))))
+(define (packages-by-license license)
+ "Return a list of packages with LICENSE."
+ (matching-packages
+ (lambda (package)
+ (memq license (list-maybe (package-license package))))))
+
(define (all-available-packages)
"Return a list of all available packages."
(matching-packages (const #t)))
@@ -663,6 +669,9 @@ ENTRIES is a list of installed manifest entries."
(manifest-output-proc (apply-to-first manifest-output-patterns))
(regexp-proc (lambda (_ regexp params . __)
(packages-by-regexp regexp params)))
+ (license-proc (lambda (_ license-name)
+ (packages-by-license
+ (lookup-license license-name))))
(all-proc (lambda _ (all-available-packages)))
(newest-proc (lambda _ (newest-available-packages))))
`((package
@@ -671,6 +680,7 @@ ENTRIES is a list of installed manifest entries."
(installed . ,manifest-package-proc)
(obsolete . ,(apply-to-first obsolete-package-patterns))
(regexp . ,regexp-proc)
+ (license . ,license-proc)
(all-available . ,all-proc)
(newest-available . ,newest-proc))
(output
@@ -679,6 +689,7 @@ ENTRIES is a list of installed manifest entries."
(installed . ,manifest-output-proc)
(obsolete . ,(apply-to-first obsolete-output-patterns))
(regexp . ,regexp-proc)
+ (license . ,license-proc)
(all-available . ,all-proc)
(newest-available . ,newest-proc)))))
@@ -1042,3 +1053,55 @@ Return #t if the shell command was executed successfully."
;; See the comment to 'guix-package-names' function in "guix-popup.el".
(define (package-names-lists)
(map list (package-names)))
+
+
+;;; Licenses
+
+(define %licenses
+ (delay
+ (filter license?
+ (module-map (lambda (_ var)
+ (variable-ref var))
+ (resolve-interface '(guix licenses))))))
+
+(define (licenses)
+ (force %licenses))
+
+(define (license-names)
+ "Return a list of names of available licenses."
+ (map license-name (licenses)))
+
+(define lookup-license
+ (memoize
+ (lambda (name)
+ "Return a license by its name."
+ (find (lambda (l)
+ (string=? name (license-name l)))
+ (licenses)))))
+
+(define (lookup-license-uri name)
+ "Return a license URI by its name."
+ (and=> (lookup-license name)
+ license-uri))
+
+(define %license-param-alist
+ `((id . ,license-name)
+ (name . ,license-name)
+ (url . ,license-uri)
+ (comment . ,license-comment)))
+
+(define license->sexp
+ (object-transformer %license-param-alist))
+
+(define (find-licenses search-type . search-values)
+ "Return a list of licenses depending on SEARCH-TYPE and SEARCH-VALUES."
+ (case search-type
+ ((id name)
+ (let ((names search-values))
+ (filter-map lookup-license names)))
+ ((all)
+ (licenses))))
+
+(define (license-entries search-type . search-values)
+ (map license->sexp
+ (apply find-licenses search-type search-values)))
diff --git a/emacs/guix-messages.el b/emacs/guix-messages.el
index c4f15dcac2..de0331fff8 100644
--- a/emacs/guix-messages.el
+++ b/emacs/guix-messages.el
@@ -36,6 +36,10 @@
(name
,(lambda (_ entries names)
(guix-message-packages-by-name entries 'package names)))
+ (license
+ ,(lambda (_ entries licenses)
+ (apply #'guix-message-packages-by-license
+ entries 'package licenses)))
(regexp
(0 "No packages matching '%s'." val)
(1 "A single package matching '%s'." val)
@@ -64,6 +68,10 @@
(name
,(lambda (_ entries names)
(guix-message-packages-by-name entries 'output names)))
+ (license
+ ,(lambda (_ entries licenses)
+ (apply #'guix-message-packages-by-license
+ entries 'output licenses)))
(regexp
(0 "No package outputs matching '%s'." val)
(1 "A single package output matching '%s'." val)
@@ -159,6 +167,13 @@ Try \"M-x guix-search-by-name\"."
(guix-message-string-name (car names))))))
(message "%s %s." str-beg str-end)))
+(defun guix-message-packages-by-license (entries entry-type license)
+ "Display a message for packages or outputs searched by LICENSE."
+ (let* ((count (length entries))
+ (str-beg (guix-message-string-entries count entry-type))
+ (str-end (format "with license '%s'" license)))
+ (message "%s %s." str-beg str-end)))
+
(defun guix-message-generations-by-time (profile entries times)
"Display a message for generations searched by TIMES."
(let* ((count (length entries))
diff --git a/emacs/guix-read.el b/emacs/guix-read.el
index 3bc7b16587..a1a6b86364 100644
--- a/emacs/guix-read.el
+++ b/emacs/guix-read.el
@@ -1,6 +1,6 @@
;;; guix-read.el --- Minibuffer readers
-;; Copyright © 2015 Alex Kost <alezost@gmail.com>
+;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
@@ -58,6 +58,10 @@
'package-names-lists)))
#'string<))
+(guix-memoized-defun guix-license-names ()
+ "Return a list of names of available licenses."
+ (guix-eval-read (guix-make-guile-expression 'license-names)))
+
;;; Readers
@@ -122,6 +126,11 @@
:multiple-prompt "Package,s: "
:multiple-separator " ")
+(guix-define-readers
+ :completions-getter guix-license-names
+ :single-reader guix-read-license-name
+ :single-prompt "License: ")
+
(provide 'guix-read)
;;; guix-read.el ends here
diff --git a/emacs/guix-ui-generation.el b/emacs/guix-ui-generation.el
index 4047850f23..74b8ff2579 100644
--- a/emacs/guix-ui-generation.el
+++ b/emacs/guix-ui-generation.el
@@ -166,7 +166,7 @@ current profile's GENERATION."
:format '((number nil 5 guix-list-sort-numerically-0 :right-align t)
(current guix-generation-list-get-current 10 t)
(time guix-list-get-time 20 t)
- (path guix-list-get-file-path 30 t))
+ (path guix-list-get-file-name 30 t))
:titles '((number . "N."))
:sort-key '(number . t)
:marks '((delete . ?D)))
diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el
index 29514527ce..414bc9b9d2 100644
--- a/emacs/guix-ui-package.el
+++ b/emacs/guix-ui-package.el
@@ -35,6 +35,8 @@
(require 'guix-entry)
(require 'guix-utils)
(require 'guix-hydra-build)
+(require 'guix-read)
+(require 'guix-license)
(guix-ui-define-entry-type package)
(guix-ui-define-entry-type output)
@@ -220,7 +222,7 @@ ENTRIES is a list of package entries to get info about packages."
(source simple guix-package-info-insert-source)
(location format (format guix-package-location))
(home-url format (format guix-url))
- (license format (format guix-package-info-license))
+ (license format (format guix-package-license))
(systems format guix-package-info-insert-systems)
(inputs format (format guix-package-input))
(native-inputs format (format guix-package-native-input))
@@ -338,6 +340,13 @@ formatted with this string, an action button is inserted.")
'action (lambda (btn)
(guix-find-location (button-label btn))))
+(define-button-type 'guix-package-license
+ :supertype 'guix
+ 'face 'guix-package-info-license
+ 'help-echo "Browse license URL"
+ 'action (lambda (btn)
+ (guix-browse-license-url (button-label btn))))
+
(define-button-type 'guix-package-name
:supertype 'guix
'face 'guix-package-info-name-button
@@ -767,7 +776,7 @@ for all ARGS."
(dependencies simple (indent guix-file))
(location format (format guix-package-location))
(home-url format (format guix-url))
- (license format (format guix-package-info-license))
+ (license format (format guix-package-license))
(systems format guix-package-info-insert-systems)
(inputs format (format guix-package-input))
(native-inputs format (format guix-package-native-input))
@@ -925,6 +934,17 @@ Interactively with prefix, prompt for PROFILE."
(guix-package-get-display profile 'name name))
;;;###autoload
+(defun guix-packages-by-license (license &optional profile)
+ "Display Guix packages with LICENSE.
+LICENSE is a license name string.
+If PROFILE is nil, use `guix-current-profile'.
+Interactively with prefix, prompt for PROFILE."
+ (interactive
+ (list (guix-read-license-name)
+ (guix-ui-read-profile)))
+ (guix-package-get-display profile 'license license))
+
+;;;###autoload
(defun guix-search-by-regexp (regexp &optional params profile)
"Search for Guix packages by REGEXP.
PARAMS are package parameters that should be searched.
diff --git a/emacs/guix-ui-system-generation.el b/emacs/guix-ui-system-generation.el
index d79f3bceef..7f4d76d489 100644
--- a/emacs/guix-ui-system-generation.el
+++ b/emacs/guix-ui-system-generation.el
@@ -71,7 +71,7 @@ SEARCH-VALUES."
(current guix-generation-list-get-current 10 t)
(label nil 40 t)
(time guix-list-get-time 20 t)
- (path guix-list-get-file-path 30 t))
+ (path guix-list-get-file-name 30 t))
:titles guix-generation-list-titles
:sort-key '(number . t)
:marks '((delete . ?D)))
diff --git a/gnu-system.am b/gnu-system.am
index 45511d2eb8..ac386355df 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -36,7 +36,6 @@ GNU_SYSTEM_MODULES = \
gnu/packages/animation.scm \
gnu/packages/apl.scm \
gnu/packages/apr.scm \
- gnu/packages/aria2.scm \
gnu/packages/asciidoc.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 953c5b4cf8..eca4d9208f 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -58,9 +58,11 @@
#:use-module (gnu packages image)
#:use-module (gnu packages xorg)
#:use-module (gnu packages python)
- #:use-module (gnu packages man))
+ #:use-module (gnu packages man)
+ #:use-module (gnu packages autotools))
(define-public dmd
+ ;; Deprecated. Kept around "just in case."
(let ((base-version "0.2")
(patch-level "01"))
(package
@@ -99,6 +101,31 @@ interface and is based on GNU Guile.")
(license license:gpl3+)
(home-page "http://www.gnu.org/software/dmd/"))))
+(define-public shepherd
+ (package
+ (name "shepherd")
+ (version "0.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "ftp://alpha.gnu.org/gnu/dmd/shepherd-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "13mcy2131h7hggqvxbfxyrnbz46aaiaq2agng3x3f789a78n4mnn"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags '("--localstatedir=/var")))
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (inputs `(("guile" ,guile-2.0)))
+ (synopsis "System service manager")
+ (description
+ "The GNU Shepherd is a daemon-managing daemon, meaning that it supervises
+the execution of system services, replacing similar functionality found in
+typical init systems. It provides dependency-handling through a convenient
+interface and is based on GNU Guile.")
+ (license license:gpl3+)
+ (home-page "http://www.gnu.org/software/shepherd/")))
+
(define-public dfc
(package
(name "dfc")
diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm
index f96b0ab5d0..1af735b6eb 100644
--- a/gnu/packages/adns.scm
+++ b/gnu/packages/adns.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,7 +21,8 @@
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages pkg-config))
(define-public adns
(package
@@ -53,3 +55,28 @@ functionality. The library is asynchronous, allowing several concurrent
calls. The package also includes several command-line utilities for use in
scripts.")
(license gpl3+)))
+
+(define-public c-ares
+ (package
+ (name "c-ares")
+ (version "1.10.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://c-ares.haxx.se/download/" name "-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "http://c-ares.haxx.se/")
+ (synopsis "C library for asynchronous DNS requests")
+ (description
+ "C-ares is a C library that performs DNS requests and name resolution
+asynchronously. It is intended for applications which need to perform DNS
+queries without blocking, or need to perform multiple DNS queries in parallel.
+The primary examples of such applications are servers which communicate with
+multiple clients and programs with graphical user interfaces.")
+ (license (x11-style "http://c-ares.haxx.se/license.html"))))
diff --git a/gnu/packages/aria2.scm b/gnu/packages/aria2.scm
deleted file mode 100644
index 707a3ce0e4..0000000000
--- a/gnu/packages/aria2.scm
+++ /dev/null
@@ -1,49 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
-;;;
-;;; 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 aria2)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix download)
- #:use-module (guix packages)
- #:use-module (guix build-system gnu)
- #:use-module (gnu packages pkg-config))
-
-(define-public c-ares
- (package
- (name "c-ares")
- (version "1.10.0")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://c-ares.haxx.se/download/" name "-" version
- ".tar.gz"))
- (sha256
- (base32
- "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (home-page "http://c-ares.haxx.se/")
- (synopsis "C library for asynchronous DNS requests")
- (description
- "C-ares is a C library that performs DNS requests and name resolution
-asynchronously. It is intended for applications which need to perform DNS
-queries without blocking, or need to perform multiple DNS queries in parallel.
-The primary examples of such applications are servers which communicate with
-multiple clients and programs with graphical user interfaces.")
- (license (license:x11-style "http://c-ares.haxx.se/license.html"))))
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index 38ed997163..2425d1cbec 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -89,10 +89,10 @@ dictionaries, including personal ones.")
(define-public aspell-dict-en
(aspell-dictionary "en" "English"
- #:version "7.1-0"
+ #:version "2016.01.19-0"
#:sha256
(base32
- "02ldfiny4iakgfgy4sdrzjqdzi7l1rmb6y30lv31kfy5x31g77gz")))
+ "01h4cl4lngp6mcfbyb47cjrc2gspyg2519dvknd97ki896nx7vcn")))
(define-public aspell-dict-eo
(aspell-dictionary "eo" "Esperanto"
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 0823aad91e..7f0d87ddf7 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -70,14 +70,14 @@
(define-public alsa-modular-synth
(package
(name "alsa-modular-synth")
- (version "2.1.1")
+ (version "2.1.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/alsamodular/ams-"
version ".tar.bz2"))
(sha256
(base32
- "1nb7qzzqlqa2x8h797jbwi18ihnfkxqg9lyi0c4nvf8ybwzxkzd2"))))
+ "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
(build-system gnu-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index a9df676fc6..992ab30fe9 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2647,7 +2647,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
(define-public ngs-sdk
(package
(name "ngs-sdk")
- (version "1.2.2")
+ (version "1.2.3")
(source
(origin
(method url-fetch)
@@ -2657,7 +2657,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0rvq61zfw2h9jcz6a33b9xrl20r7s5a9rldvv6rs2qy42khpmf5j"))))
+ "15074fdi94c6pjy83hhk22r86kfvzpaz2i07h3rqg9yy6x3w0pk2"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f ; not supported
@@ -2711,7 +2711,7 @@ simultaneously.")
(define-public ncbi-vdb
(package
(name "ncbi-vdb")
- (version "2.5.4")
+ (version "2.5.7")
(source
(origin
(method url-fetch)
@@ -2721,7 +2721,7 @@ simultaneously.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1rcnyc4xkdfcjww2i0s0qrbapys0cxbjcx2sy3qkpslf9f400fgj"))))
+ "0hay5hy8ynva3mi5wbn4wmq1q23qwxc3aqzbb86hg3x4f1r73270"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f ; not supported
@@ -2951,7 +2951,7 @@ complexity samples.")
(define-public sra-tools
(package
(name "sra-tools")
- (version "2.5.4")
+ (version "2.5.7")
(source
(origin
(method url-fetch)
@@ -2961,7 +2961,7 @@ complexity samples.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1rxxc8a34g70jcaa2j8sys2x93amlbc24k7az39wldhkzgi96825"))))
+ "0q93qg744x787d08qmjmdafki1wkbvkdwynayjnjd454gkd26jl5"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f ; not supported
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 94383dba20..16673edf68 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -2,6 +2,7 @@
;;; 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>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,20 +26,25 @@
#: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)
+ #:use-module (gnu packages adns)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages curl)
- #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages cyrus-sasl)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages file)
- #:use-module (gnu packages linux)
- #:use-module (gnu packages compression)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
- #:use-module (gnu packages check)
+ #:use-module (gnu packages libevent)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages nettle)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
- #:use-module (gnu packages curl)
- #:use-module (gnu packages cyrus-sasl)
- #:use-module (gnu packages tls))
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages xml))
(define-public transmission
(package
@@ -192,3 +198,48 @@ XML-RPC over SCGI.")
interface, for the Transmission BitTorrent daemon.")
(home-page "https://github.com/fagga/transmission-remote-cli")
(license l:gpl3+)))
+
+(define-public aria2
+ (package
+ (name "aria2")
+ (version "1.19.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/tatsuhiro-t/aria2/"
+ "releases/download/release-" version "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1qwr4al6wlh5f558r0mr1hvdnf7d8ss6qwqn2361k99phk1cdg3a"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags '("--enable-libaria2")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'delete-socket-tests
+ (lambda _
+ (substitute* "test/LpdMessageDispatcherTest.cc"
+ (("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageDispatcherTest\\);" text)
+ (string-append "// " text)))
+ (substitute* "test/LpdMessageReceiverTest.cc"
+ (("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageReceiverTest\\);" text)
+ (string-append "// " text))))))))
+ (native-inputs
+ `(("pkg-config", pkg-config)))
+ (inputs
+ `(("c-ares" ,c-ares)
+ ("cppunit" ,cppunit) ; for the tests
+ ("gnutls" ,gnutls)
+ ("gmp" ,gmp)
+ ("libssh2" ,libssh2)
+ ("libxml2" ,libxml2)
+ ("nettle" ,nettle)
+ ("sqlite" ,sqlite)
+ ("zlib" ,zlib)))
+ (home-page "http://aria2.sourceforge.net/")
+ (synopsis "Utility for parallel downloading files")
+ (description
+ "Aria2 is a lightweight, multi-protocol & multi-source command-line
+download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
+Aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.")
+ (license l:gpl2+)))
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 3b7a243ba7..21ecd8413a 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -3,6 +3,7 @@
;;; 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 © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -26,6 +27,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial))
@@ -147,3 +149,26 @@ supervised tests.")
"Catch stands for C++ Automated Test Cases in Headers and is a
multi-paradigm automated test framework for C++ and Objective-C.")
(license boost1.0)))
+
+(define-public cmocka
+ (package
+ (name "cmocka")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://cmocka.org/files/1.0/cmocka-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0fvm6rdalqcxckbddch8ycdw6n2ckldblv117n09chi2l7bm0q5k"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f)) ; No test target
+ (home-page "https://cmocka.org/")
+ (synopsis "Unit testing framework for C")
+ (description "Cmocka is a unit testing framework for C with support for
+mock objects. It only requires the standard C library, and works with
+different compilers. Cmocka supports several different message output formats
+like Test Anything Protocol, Subunit, xUnit XML or the original cmockery output
+format.")
+ (license asl2.0)))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 7d22095df1..4a31bf79e2 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -32,8 +33,10 @@
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
+ #:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages valgrind)
#:use-module ((srfi srfi-1) #:select (last)))
@@ -659,3 +662,29 @@ multiple processors and multiple cores when compressing data.")
;; Things under zopfli/ are under ASL2.0, but 4 files at the top-level,
;; written by Mark Adler, are under another non-copyleft license.
(license license:asl2.0)))
+
+(define-public pixz
+ (package
+ (name "pixz")
+ (version "1.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/vasi/pixz/releases/download/v" version
+ "/pixz-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1s3j7zw6j5zi3fhdxg287ndr3wf6swac7z21mqd1pyiln530gi82"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("libarchive" ,libarchive)))
+ (home-page "https://github.com/vasi/pixz")
+ (synopsis "Parallel indexing implementation of LZMA")
+ (description
+ "The existing XZ Utils provide great compression in the .xz file format,
+but they produce just one big block of compressed data. Pixz instead produces
+a collection of smaller blocks which makes random access to the original data
+possible and can compress in parallel. This is especially useful for large
+tarballs.")
+ (license license:bsd-2)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 3fec6c6fc7..7fbbaac071 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -23,6 +23,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
@@ -41,9 +42,10 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages lua)
#:use-module (gnu packages pdf)
- #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages python)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
#:use-module (gnu packages video)
@@ -306,3 +308,39 @@ file manager, wide range of configuration options, plugin system allowing to
unload unused functionality, with support for touchscreen and suitable for
embedded systems.")
(license license:bsd-2)))
+
+(define-public python-efl
+ (package
+ (name "python-efl")
+ (version "1.16.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-efl" version))
+ (sha256
+ (base32
+ "1ihay90agl2jx12m7jj8j1cspd7vsak1w7q95rhb6r2srkq0ppxk"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'set-flags
+ (lambda _
+ (setenv "CFLAGS"
+ (string-append "-I" (assoc-ref %build-inputs "python-dbus")
+ "/include/dbus-1.0")))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("efl" ,efl)
+ ("elementary" ,elementary)
+ ("python-dbus" ,python-dbus)))
+ (home-page "https://www.enlightenment.org/")
+ (synopsis "Python bindings for EFL")
+ (description
+ "PYTHON-EFL are the python bindings for the whole Enlightenment Foundation
+Libraries stack (eo, evas, ecore, edje, emotion, ethumb and elementary).")
+ (license license:lgpl3)))
+
+(define-public python2-efl
+ (package-with-python2 python-efl))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6e5553bd30..fa7c2f7691 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1557,6 +1557,161 @@ functionality, making it easier to migrate test suites from bacon to minitest.")
(home-page "https://github.com/seattlerb/minitest-bacon")
(license license:expat)))
+(define-public ruby-minitest-focus
+ (package
+ (name "ruby-minitest-focus")
+ (version "1.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-focus" version))
+ (sha256
+ (base32
+ "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-minitest" ,ruby-minitest)))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)))
+ (synopsis "Allows a few specific tests to be focused on")
+ (description
+ "@code{minitest-focus} gives the ability focus on a few tests with ease
+without having to use command-line arguments. It introduces a @code{focus}
+class method for use in testing classes, specifying that the next defined test
+is to be run.")
+ (home-page "https://github.com/seattlerb/minitest-focus")
+ (license license:expat)))
+
+(define-public ruby-minitest-pretty-diff
+ ;; Use git reference because gem is out of date and does not contain testing
+ ;; script. There are no releases on GitHub.
+ (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
+ (package
+ (name "ruby-minitest-pretty-diff")
+ (version (string-append "0.1-1." (string-take commit 8)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/adammck/minitest-pretty_diff.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "script/test")))))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-turn" ,ruby-turn)))
+ (synopsis "Pretty-print hashes and arrays in MiniTest")
+ (description
+ "@code{minitest-pretty_diff} monkey-patches
+@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
+diffing them. This makes it easier to spot differences between nested
+structures when tests fail.")
+ (home-page "https://github.com/adammck/minitest-pretty_diff")
+ (license license:expat))))
+
+(define-public ruby-minitest-moar
+ (package
+ (name "ruby-minitest-moar")
+ (version "0.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-moar" version))
+ (sha256
+ (base32
+ "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'clean-dependencies
+ (lambda _
+ ;; Remove all gems defined in the Gemfile because these are not
+ ;; truly needed.
+ (substitute* "Gemfile"
+ (("gem .*") ""))
+ ;; Remove byebug as not needed to run tests.
+ (substitute* "test/test_helper.rb"
+ (("require 'byebug'") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Extra features and changes to MiniTest")
+ (description "@code{MiniTest Moar} add some additional features and
+changes some default behaviours in MiniTest. For instance, Moar replaces the
+MiniTest @code{Object#stub} with a global @code{stub} method.")
+ (home-page "https://github.com/dockyard/minitest-moar")
+ (license license:expat)))
+
+(define-public ruby-minitest-bonus-assertions
+ (package
+ (name "ruby-minitest-bonus-assertions")
+ (version "2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-bonus-assertions" version))
+ (sha256
+ (base32
+ "11nrd32kwy61ndg9csk7l1ifya79ghrrv3vsrxj57k50m7na6jkm"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'clean-dependencies
+ (lambda _
+ ;; Remove unneeded require statement that would entail another
+ ;; dependency.
+ (substitute* "test/minitest_config.rb"
+ (("require 'minitest/bisect'") ""))
+ #t)))))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
+ ("ruby-minitest-focus" ,ruby-minitest-focus)
+ ("ruby-minitest-moar" ,ruby-minitest-moar)))
+ (synopsis "Bonus assertions for @code{Minitest}")
+ (description
+ "Minitest bonus assertions provides extra MiniTest assertions. For
+instance, it provides @code{assert_true}, @code{assert_false} and
+@code{assert_set_equal}.")
+ (home-page "https://github.com/halostatue/minitest-bonus-assertions")
+ (license license:expat)))
+
+(define-public ruby-minitest-rg
+ (package
+ (name "ruby-minitest-rg")
+ (version "5.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-rg" version))
+ (sha256
+ (base32
+ "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Some tests fail even outside Guix, so disable tests.
+ ;; https://github.com/blowmage/minitest-rg/issues/12
+ ;; https://github.com/blowmage/minitest-rg/pull/13
+ `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Coloured output for Minitest")
+ (description
+ "@code{minitest-rg} changes the colour of the output from Minitest.")
+ (home-page "http://blowmage.com/minitest-rg")
+ (license license:expat)))
+
(define-public ruby-daemons
(package
(name "ruby-daemons")
@@ -2943,6 +3098,369 @@ used to create both network servers and clients.")
(home-page "http://rubyeventmachine.com")
(license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
+(define-public ruby-turn
+ (package
+ (name "ruby-turn")
+ (version "0.9.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "turn" version))
+ (sha256
+ (base32
+ "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Tests fail because turn changes its environment so can no longer
+ ;; find test/unit. Instead simply test if the executable runs
+ ;; without issue.
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "bin/turn" "-h")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)
+ ("ruby-minitest" ,ruby-minitest-4)))
+ (synopsis "Alternate set of alternative runners for MiniTest")
+ (description
+ "TURN provides a set of alternative runners for MiniTest which are both
+colorful and informative. TURN displays each test on a separate line with
+failures being displayed immediately instead of at the end of the tests. Note
+that TURN is no longer being maintained.")
+ (home-page "http://rubygems.org/gems/turn")
+ (license license:expat)))
+
+(define-public ruby-mime-types-data
+ (package
+ (name "ruby-mime-types-data")
+ (version "3.2015.1120")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mime-types-data" version))
+ (sha256
+ (base32
+ "04fzvy02w8d0rrsg8avncn7h58pvwdxj82aps54srb3sam2dkhic"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)))
+ (synopsis "Registry for information about MIME media type definitions")
+ (description
+ "@code{mime-types-data} provides a registry for information about
+Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
+be used with the Ruby mime-types library or other software to determine
+defined filename extensions for MIME types, or to use filename extensions to
+look up the likely MIME type definitions.")
+ (home-page "https://github.com/mime-types/mime-types-data/")
+ (license license:expat)))
+
+(define-public ruby-mime-types
+ (package
+ (name "ruby-mime-types")
+ (version "3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mime-types" version))
+ (sha256
+ (base32
+ "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-mime-types-data" ,ruby-mime-types-data)))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-fivemat" ,ruby-fivemat)
+ ("ruby-minitest-focus" ,ruby-minitest-focus)
+ ("ruby-minitest-rg" ,ruby-minitest-rg)
+ ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)))
+ (synopsis "Library and registry for MIME content type definitions")
+ (description "The mime-types library provides a library and registry for
+information about Multipurpose Internet Mail Extensions (MIME) content type
+definitions. It can be used to determine defined filename extensions for MIME
+types, or to use filename extensions to look up the likely MIME type
+definitions.")
+ (home-page "https://github.com/mime-types/ruby-mime-types")
+ (license license:expat)))
+
+(define-public ruby-fivemat
+ (package
+ (name "ruby-fivemat")
+ (version "1.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "fivemat" version))
+ (sha256
+ (base32
+ "1gvw6g4yc96l2pcyvigahyfsjxpdjx21iiwzvf965zippchdh6gk"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; no tests
+ (synopsis "Each test file given its own line of dots")
+ (description
+ "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
+its own line of dots during testing. It aims to provide test output that is
+neither too verbose nor too minimal.")
+ (home-page "https://github.com/tpope/fivemat")
+ (license license:expat)))
+
+(define-public ruby-sqlite3
+ (package
+ (name "ruby-sqlite3")
+ (version "1.3.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sqlite3" version))
+ (sha256
+ (base32
+ "19r06wglnm6479ffj9dl0fa4p5j2wi6dj7k6k3d0rbx7036cv3ny"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'add-gemtest-file
+ ;; This file exists in the repository but is not distributed.
+ (lambda _ (zero? (system* "touch" ".gemtest")))))))
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-mini-portile" ,ruby-mini-portile)))
+ (synopsis "Interface with SQLite3 databases")
+ (description
+ "This module allows Ruby programs to interface with the SQLite3 database
+engine.")
+ (home-page
+ "https://github.com/sparklemotion/sqlite3-ruby")
+ (license license:bsd-3)))
+
+(define-public ruby-shoulda-context
+ (package
+ (name "ruby-shoulda-context")
+ (version "1.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda-context" version))
+ (sha256
+ (base32
+ "06wv2ika5zrbxn0m3qxwk0zkbspxids3zmlq3xxays5qmvl1qb55"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ ;; Do not run tests to avoid circular dependence with rails.
+ ;; Instead just import the library to test.
+ (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context")))))))
+ (synopsis "Test::Unit context framework extracted from Shoulda")
+ (description
+ "@code{shoulda-context} is the context framework extracted from Shoulda.
+Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
+context, setup, and should blocks combine to produce natural test method
+names.")
+ (home-page "https://github.com/thoughtbot/shoulda-context")
+ (license license:expat)))
+
+(define-public ruby-shoulda-matchers
+ (package
+ (name "ruby-shoulda-matchers")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda-matchers" version))
+ (sha256
+ (base32
+ "1agabvb8i39mjrp3kb78nvhl41xk1i258hdwdlj0fm8nj9yzn1jb"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-import
+ (lambda _
+ ;; A presumed bug reported upstream at
+ ;; https://github.com/thoughtbot/shoulda-matchers/pull/871
+ (substitute* (string-append "lib/shoulda/matchers/active_model/"
+ "validate_inclusion_of_matcher.rb")
+ (("^require 'bigdecimal'")
+ "require 'bigdecimal'; require 'date'"))))
+ (replace 'check
+ (lambda _
+ ;; Do not run tests to avoid circular dependence with rails. Instead
+ ;; just import the library to test.
+ (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
+ (propagated-inputs
+ `(("ruby-activesupport" ,ruby-activesupport)))
+ (synopsis "Collection of testing matchers extracted from Shoulda")
+ (description
+ "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
+test common Rails functionality. These tests would otherwise be much longer,
+more complex, and error-prone.")
+ (home-page "https://github.com/thoughtbot/shoulda-matchers")
+ (license license:expat)))
+
+(define-public ruby-shoulda-matchers-2
+ (package
+ (inherit ruby-shoulda-matchers)
+ (version "2.8.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda-matchers" version))
+ (sha256
+ (base32
+ "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
+
+(define-public ruby-shoulda
+ (package
+ (name "ruby-shoulda")
+ (version "3.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda" version))
+ (sha256
+ (base32
+ "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ ;; Don't run tests to avoid circular dependence with rails. Instead
+ ;; just import the library to test.
+ (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda")))))))
+ (propagated-inputs
+ `(("ruby-shoulda-context" ,ruby-shoulda-context)
+ ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
+ (synopsis "Context framework and matchers for testing")
+ (description
+ "@code{shoulda} is a meta-package combining @code{shoulda-context} and
+@code{shoulda-matchers} providing tools for writing tests.")
+ (home-page "https://github.com/thoughtbot/shoulda")
+ (license license:expat)))
+
+(define-public ruby-unf
+ (package
+ (name "ruby-unf")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "unf" version))
+ (sha256
+ (base32
+ "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'add-dependency-to-bundler
+ (lambda _
+ ;; test-unit is required but not provided by the bundler
+ ;; environment. This is fixed in the upstream repository but fix
+ ;; has not been released.
+ (substitute* "Gemfile"
+ (("^gemspec") "gem 'test-unit'\ngemspec"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-unf-ext" ,ruby-unf-ext)))
+ (native-inputs
+ `(("ruby-shoulda" ,ruby-shoulda)
+ ("bundler" ,bundler)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Unicode Normalization Form support to Ruby and JRuby")
+ (description
+ "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
+support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
+@code{java.text.Normalizer} on JRuby.")
+ (home-page "https://github.com/knu/ruby-unf")
+ (license license:bsd-2)))
+
+(define-public ruby-domain-name
+ (package
+ (name "ruby-domain-name")
+ (version "0.5.25")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "domain_name" version))
+ (sha256
+ (base32
+ "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-versions
+ (lambda _
+ ;; Fix NameError that appears to already be fixed upstream.
+ (substitute* "Rakefile"
+ (("DomainName::VERSION")
+ "Bundler::GemHelper.gemspec.version"))
+ ;; Loosen unnecessarily strict test-unit version specification.
+ (substitute* "domain_name.gemspec"
+ (("<test-unit>, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-unf" ,ruby-unf)))
+ (native-inputs
+ `(("ruby-shoulda" ,ruby-shoulda)
+ ("bundler" ,bundler)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Domain name manipulation library")
+ (description
+ "@code{domain_name} is a Domain name manipulation library. It parses a
+domain name ready for extracting the registered domain and TLD (Top Level
+Domain). It can also be used for cookie domain validation based on the Public
+Suffix List.")
+ (home-page "https://github.com/knu/ruby-domain_name")
+ (license license:bsd-2)))
+
+(define-public ruby-http-cookie
+ (package
+ (name "ruby-http-cookie")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "http-cookie" version))
+ (sha256
+ (base32
+ "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'add-dependency-to-bundler
+ (lambda _
+ ;; Fix NameError
+ (substitute* "Rakefile"
+ (("HTTP::Cookie::VERSION")
+ "Bundler::GemHelper.gemspec.version"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-domain-name" ,ruby-domain-name)))
+ (native-inputs
+ `(("rubysimplecov" ,ruby-simplecov)
+ ("bundler" ,bundler)
+ ("ruby-sqlite3" ,ruby-sqlite3)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Handle HTTP Cookies based on RFC 6265")
+ (description
+ "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
+RFC 6265. It has been designed with security, standards compliance and
+compatibility in mind, to behave just the same as today's major web browsers.
+It has built-in support for the legacy @code{cookies.txt} and
+@code{cookies.sqlite} formats of Mozilla Firefox.")
+ (home-page "https://github.com/sparklemotion/http-cookie")
+ (license license:expat)))
+
(define-public ruby-ansi
(package
(name "ruby-ansi")
@@ -3042,3 +3560,326 @@ to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
detail to ease debugging.")
(home-page "http://github.com/wwood/bioruby-commandeer")
(license license:expat)))
+
+(define-public ruby-rubytest
+ (package
+ (name "ruby-rubytest")
+ (version "0.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rubytest" version))
+ (sha256
+ (base32
+ "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Disable regular testing to break the cycle rubytest, qed, brass,
+ ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
+ ;; simply test that the library can be require'd.
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)))
+ (synopsis "Universal test harness for Ruby")
+ (description
+ "Rubytest is a testing meta-framework for Ruby. It can handle any
+compliant test framework and can run tests from multiple frameworks in a
+single pass.")
+ (home-page "http://rubyworks.github.io/rubytest")
+ (license license:bsd-2)))
+
+(define-public ruby-brass
+ (package
+ (name "ruby-brass")
+ (version "1.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "brass" version))
+ (sha256
+ (base32
+ "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
+ ;; Instead simply test that the library can be require'd.
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
+ (synopsis "Basic foundational assertions framework")
+ (description
+ "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
+foundational assertions framework for other assertion and test frameworks to
+make use of.")
+ (home-page "http://rubyworks.github.io/brass")
+ (license license:bsd-2)))
+
+(define-public ruby-qed
+ (package
+ (name "ruby-qed")
+ (version "2.9.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "qed" version))
+ (sha256
+ (base32
+ "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Disable testing to break the cycle qed, ansi, qed, among others.
+ ;; Instead simply test that the executable runs using --copyright.
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)
+ ("ruby-brass" ,ruby-brass)))
+ (synopsis "Test framework utilizing literate programming techniques")
+ (description
+ "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
+@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
+Development} (BDD) utilizing Literate Programming techniques. QED sits
+somewhere between lower-level testing tools like @code{Test::Unit} and
+requirement specifications systems like Cucumber.")
+ (home-page "http://rubyworks.github.io/qed")
+ (license license:bsd-2)))
+
+(define-public ruby-ae
+ (package
+ (name "ruby-ae")
+ (version "1.8.2")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Fetch from github so tests are included.
+ (uri (string-append
+ "https://github.com/rubyworks/ae/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "qed")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)))
+ (native-inputs
+ `(("ruby-qed" ,ruby-qed)))
+ (synopsis "Assertions library")
+ (description
+ "Assertive Expressive (AE) is an assertions library specifically designed
+for reuse by other test frameworks.")
+ (home-page "http://rubyworks.github.io/ae")
+ (license license:bsd-2)))
+
+(define-public ruby-lemon
+ (package
+ (name "ruby-lemon")
+ (version "0.9.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "lemon" version))
+ (sha256
+ (base32
+ "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check (lambda _ (zero? (system* "qed")))))))
+ (propagated-inputs
+ `(("ruby-ae" ,ruby-ae)
+ ("ruby-ansi" ,ruby-ansi)
+ ("ruby-rubytest" ,ruby-rubytest)))
+ (native-inputs
+ `(("ruby-qed" ,ruby-qed)))
+ (synopsis "Test framework correlating code structure and test unit")
+ (description
+ "Lemon is a unit testing framework that enforces highly formal
+case-to-class and unit-to-method test construction. This enforcement can help
+focus concern on individual units of behavior.")
+ (home-page "http://rubyworks.github.io/lemon")
+ (license license:bsd-2)))
+
+(define-public ruby-rubytest-cli
+ (package
+ (name "ruby-rubytest-cli")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rubytest-cli" version))
+ (sha256
+ (base32
+ "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; no tests
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)
+ ("ruby-rubytest" ,ruby-rubytest)))
+ (synopsis "Command-line interface for rubytest")
+ (description
+ "Rubytest CLI is a command-line interface for running tests for
+Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
+ (home-page "http://rubyworks.github.io/rubytest-cli")
+ (license license:bsd-2)))
+
+(define-public ruby-hashery
+ (package
+ (name "ruby-hashery")
+ (version "2.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "hashery" version))
+ (sha256
+ (base32
+ "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (and (zero? (system* "qed"))
+ (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
+ (native-inputs
+ `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
+ ("ruby-qed" ,ruby-qed)
+ ("ruby-lemon" ,ruby-lemon)))
+ (synopsis "Hash-like classes with extra features")
+ (description
+ "The Hashery is a tight collection of @code{Hash}-like classes.
+Included are the auto-sorting @code{Dictionary} class, the efficient
+@code{LRUHash}, the flexible @code{OpenHash} and the convenient
+@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
+defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
+standard @code{Hash} making it possible to subclass and augment to fit any
+specific use case.")
+ (home-page "http://rubyworks.github.io/hashery")
+ (license license:bsd-2)))
+
+(define-public ruby-rc4
+ (package
+ (name "ruby-rc4")
+ (version "0.1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ruby-rc4" version))
+ (sha256
+ (base32
+ "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec-2)))
+ (synopsis "Implementation of the RC4 algorithm")
+ (description
+ "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
+ (home-page "https://github.com/caiges/Ruby-RC4")
+ (license license:expat)))
+
+(define-public ruby-afm
+ (package
+ (name "ruby-afm")
+ (version "0.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "afm" version))
+ (sha256
+ (base32
+ "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Read Adobe Font Metrics (afm) files")
+ (description
+ "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
+files and use the data therein.")
+ (home-page "http://github.com/halfbyte/afm")
+ (license license:expat)))
+
+(define-public ruby-ascii85
+ (package
+ (name "ruby-ascii85")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "Ascii85" version))
+ (sha256
+ (base32
+ "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Encode and decode Ascii85 binary-to-text encoding")
+ (description
+ "This library provides methods to encode and decode Ascii85
+binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
+@dfn{Portable Document Format} (PDF) file formats.")
+ (home-page "https://github.com/datawraith/ascii85gem")
+ (license license:expat)))
+
+(define-public ruby-ttfunk
+ (package
+ (name "ruby-ttfunk")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ ;; fetch from github as the gem does not contain testing code
+ (uri (string-append
+ "https://github.com/prawnpdf/ttfunk/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'remove-rubocop
+ (lambda _
+ ;; remove rubocop as a dependency as not needed for testing
+ (substitute* "ttfunk.gemspec"
+ (("spec.add_development_dependency\\('rubocop'.*") ""))
+ (substitute* "Rakefile"
+ (("require 'rubocop/rake_task'") "")
+ (("Rubocop::RakeTask.new") ""))
+ #t)))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("bundler" ,bundler)))
+ (synopsis "Font metrics parser for the Prawn PDF generator")
+ (description
+ "TTFunk is a TrueType font parser written in pure Ruby. It is used as
+part of the Prawn PDF generator.")
+ (home-page "https://github.com/prawnpdf/ttfunk")
+ ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
+ ;; for details."
+ (license (list license:gpl2 license:gpl3 license:ruby))))
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index be48b25c9a..a22991c906 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -303,7 +303,7 @@ required structures.")
(define-public libressl
(package
(name "libressl")
- (version "2.2.0")
+ (version "2.2.5")
(source
(origin
(method url-fetch)
@@ -311,7 +311,7 @@ required structures.")
"http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-"
version ".tar.gz"))
(sha256 (base32
- "0h1haqb4y39p1zihwvnr1ib0zfq5bcqfnbj5jm9l4j2xibrxi44n"))))
+ "0jwidi7fafcdh5qml72dx0ad0kfsk94qxzm29i7wd3cx8v8dxjp3"))))
(build-system gnu-build-system)
(native-search-paths
;; FIXME: These two variables must designate a single file or directory
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 02317d2fef..a4f4c021e4 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -100,14 +100,14 @@ and its related documentation.")
(define-public nginx
(package
(name "nginx")
- (version "1.8.0")
+ (version "1.8.1")
(source (origin
(method url-fetch)
(uri (string-append "http://nginx.org/download/nginx-"
version ".tar.gz"))
(sha256
(base32
- "1mgkkmmwkhmpn68sdvbd73ssv6lpqhh864fsyvc1ij4hk4is3k13"))))
+ "1dwpyw4pvhj68vxramqxm8f79pqz9lrm8mvifbn49h3615ikqjwg"))))
(build-system gnu-build-system)
(inputs `(("pcre" ,pcre)
("openssl" ,openssl)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 25143c80a6..0399c0049d 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.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 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@@ -946,7 +946,9 @@ failed to register hydra.gnu.org public key: ~a~%" status))))))))
(extensions
(list (service-extension dmd-root-service-type guix-dmd-service)
(service-extension account-service-type guix-accounts)
- (service-extension activation-service-type guix-activation)))))
+ (service-extension activation-service-type guix-activation)
+ (service-extension profile-service-type
+ (compose list guix-configuration-guix))))))
(define* (guix-service #:optional (config %default-guix-configuration))
"Return a service that runs the Guix build daemon according to
diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm
index 545087acc9..fb3d3326f8 100644
--- a/gnu/services/dmd.scm
+++ b/gnu/services/dmd.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.
;;;
@@ -88,7 +88,9 @@
;; list of services provided by the extensions.
(compose concatenate)
(extend append)
- (extensions (list (service-extension boot-service-type dmd-boot-gexp)))))
+ (extensions (list (service-extension boot-service-type dmd-boot-gexp)
+ (service-extension profile-service-type
+ (const (list dmd)))))))
(define %dmd-root-service
;; The root dmd service, aka. PID 1. Its parameter is a list of
diff --git a/gnu/system.scm b/gnu/system.scm
index edcfaf66fe..024518445d 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -353,7 +353,6 @@ explicitly appear in OS."
;; Default set of packages globally visible. It should include anything
;; required for basic administrator tasks.
(cons* procps psmisc which less zile nano
- (@ (gnu packages admin) dmd) guix
lsof ;for Guix's 'list-runtime-roots'
pciutils usbutils
util-linux inetutils isc-dhcp